HTTPS OpenSSL 인증서 테스트 구현

HTTPS 서버 구축시 인증서 테스트 구현

HTTS는 HTTP 보안 프로토콜이다. http로 전송되는 데이터를 암호화해서 보안을 위해서 최근에는 로그인이나 API 등 보안에 민감한 요청은 https를 사용한다. https에서 s는 secure socket을 사용을 의미한다. https는 인증서를 등록해서 사용하는데 최신 브라우저에서는 https로 접근하면 보안 프로토콜을 사용한다는 표시를 한다거나 인증서 확인을하는 작업등을 한다.
이런 이유 때문에 클라이언트 프로그램이 https로 요청하면 인증처리하는 과정을 거쳐야하기 때문에 일반 http 요청과 다른 과정이 필요하다. 개발할 때 https를 테스트하기 위해서 https에 사용되는 인증서를 구입해서 개발할 수는 없다. https에 사용하기 위해서 인증서를 만들더라도 https는 하나의 도메인만 적용되고 그 가격도 너무 고가이기 때문에 개발용 서버에 https 인증서를 구입하는 것은 효율적이지 못하기 때문이다. 그럼 어떻게 개발용으로 https 서버를 구현할 수 있을까? 다행히 OpenSSL을 사용하면 자체 인증서를 만들 수 있다. 하지만 공인으로 등록된 인증서가 아니기 때문에 OpenSSL로 만든 인증서는 실제 서비스를 하는데는 무리가 있다. 하지만 개발용으로는 충분히 사용 가능하다.

아래에 OpenSSL 바이너리형은 윈도우 전용이며, OS 환경에 맞는 버전을 다운로드 받으면 된다.

OpenSSL 바이너리형: http://code.google.com/p/openssl-for-windows/downloads/list
OpenSSL 설치형: https://www.openssl.org/

OpenSSL 사용법

1
2
// 다운받은 OpenSSL 압축을 해제 하고 bin 디렉토리에서 명령어를 입력한다.
$ openssl-0.9.8k_X64>bin> {{명령어 실행}}

개인키 발급

우리가 첫번째 해야할 일은 개인키를 발급하는 것이다. OpenSSL에서 genrsa는 키를 RSA 알고리즘으로 만들겠다는 말이고 1024는 RSA 알고리즘을 1024로 만들겠다는 말이다.

1
$ openssl genrsa 1024 > key.pem  

이렇게 만들어진 파일을 열어보면 RSA로 PRIVATE KEY로 만들어진 것을 확인할 수 있다.

Cert 인증서 파일 생성하기

다음은 개인키를 가지고 디지털 인증서를 만들자.

1
$ openssl req -x509 -new -key key.pem > cert.pem  

인증서를 만들기 위해서는 몇가지 기입해야할 정보가 있다. 공인 인증기관에서 만드는 곳에서도 이와 동일한 항목들을 받아서 만들어지는데 OpenSSL로 인증서를 만드는 기관은 바로 자신이므로 항목에 입력을하면 디지털 인증서가 만들어진다. 물론 공인된 인증서는 아니다.

참조

공유하기