기본 콘텐츠로 건너뛰기

10월, 2015의 게시물 표시

OpenSSL로 인증서 관리

인증서 생성 출처 : http://golmong.tistory.com/112 CA 인증서 생성 인증서 발급 기관 (CA : Certification Authority)에 해당하는 사설 키 및 인증서 발급 방법 - CA 개인키 생성 :  openssl genrsa -des3 -out ca.key 1024  - Self-Signed CA 인증서 생성 :  openssl req -new -x509 -days 365 -key ca.key -out ca.crt  demoCA 폴더 생성 CA가 하위 인증서를 생성 할 때마다 그 정보를 관리할 파일을 생성한다. - demoCA 디렉토리 생성 : mkdir demoCA - 시리얼 파일 생성 :  demoCA/ serial 파일을 생성하고 text로 00을 저장한다. - index 파일 생성 :   demoCA/ index.txt 란 이름의 빈 파일을 만든다. 하위 인증서 생성 하위 발급 기관 또는 최종 사용자의 인증서 생성 - server 개인키 생성 : openssl genrsa -des3 -out server.key 1024  - server 인증서 발급을 위한 요청파일 생성 : openssl req -new -days 365 -key server.key -out server.csr - server 인증서 발급 : openssl ca -in server.csr -out server.crt -keyfile ca.key -cert ca.crt -outdir . 위 작업의 결과로 server.crt 라는 server용인증서가 생성되고 index 파일에 발급내역이, serial이 16진수로 1씩 증가한다. 인증서 인코딩 포멧 변경 - openssl 이 생성하는 인증서의 인코딩은 발급 시 옵션을 주지 않으면 디폴트가 PEM (base64 encoding)이다. - Java 등에서 사용하기 위한 DER 포맷(바이너리)으로 변경은 ...

데이터에 서명 넣기

출처 :  http://ssabro.tistory.com/35 OpenSSL기반 사인 값 생성 및 검증 C 예제 코드 1. 개요 일반적으로 OpenSSL을 사용하여 프로그래밍을 할 경우 서버 클라이언트 모델에서 보다 안전한 통신을 위해 해당 라이브러리를 사용한다. 하지만 OpenSSL은 보안 통신뿐만 아니라 데이터 암/복호화 등에도 많이 사용되며, 이와관련 다양한 API를 제공하고 있다.  본 문서에서는 인증서 기반의 데이터에 대한 사인값를 생성하고 이를 검증할 수 있는 C기반의 예제 코드를 설명한다. 2. 관련지식 각 사용자는 공개키 쌍을 가지게 되며 이 쌍은 개인키, 공개키로 구성된다. PKI 체계에서는 사용자의 공개키는 인증서로 관리되며 이 인증서는 사용자 공개키의 유효성(이 공개키가 정말 사용자의 공개키 인지 여부 등)을 보증할 수 있는 CA로부터 발급받는다. 실제 인증서는 해당 사용자의 공개키 + CA의 서명 값 + 유효기간 등의 정보가 포함된 데이터이다. 생성자 : 생성자의 개인키(생성자만이 알 수 있는 키) 검증자 : 생성자의 공개키(누구나 알 수 있는 키) 이러한 PKI 체계에서 일반적으로 사인값을 생성하는 방법은 다음과 같다.  (1) 사인값 생성자는 먼저 메시지로부터 해시(Hash)값을 생성한다. (2) 사인값 생성자는 생성된 해시값을 개인키로 암호화 한다. = 사인 값 검증은 이와 역순으로 진행된다.  (1) 사인값 검증자는 사인값(=생성자의 개인키로 암호화된 값)을 생성자의 공개키로 복호화 한다. (2) 사인값 검증자는 복호화한 값이 수신한 메시지의 해시 값과 일치하는지 확인한다. (3) 같을 경우 사인값 = O, 다를 경우 사인 값 = X 해시 알고리즘에는 MD5, SHA1, SHA-256 등이 있지만, 최근에는 안전성의 이유로 SHA1, SHA-256 사용을 권장하고 있으며 이 중에서도 SHA-...