암호화된 개인키를 이용한 인증서 생성 예제
암호화된 개인키를 사용하여 인증서를 생성하는 예제입니다.
OpenSSL을 사용하여 암호화된 개인키와 해당 개인키를 사용하여 인증서를 생성하는 방법을 알아봅시다.
$ mkdir /tmp/test_openssl_3
$ cd /tmp/test_openssl_3
$ openssl genpkey -algorithm RSA -aes256 -out private.key
$ openssl req -new -key private.key -out csr.csr
$ openssl x509 -req -in csr.csr -signkey private.key -out certificate.crt
위의 예제에서는 먼저 genpkey 명령어를 사용하여 암호화된 개인키를 생성합니다.
-algorithm RSA 옵션은 RSA 알고리즘을 사용하고, -aes256 옵션은 256비트 AES 암호화를 적용합니다.
생성된 개인키는 private.key 파일로 저장됩니다.
다음으로 req 명령어를 사용하여 CSR(Certificate Signing Request)을 생성합니다.
-key 옵션을 사용하여 생성한 개인키 파일(private.key)을 지정하고, -out 옵션으로 생성된 CSR 파일의 경로를 지정합니다.
마지막으로 x509 명령어를 사용하여 CSR을 사용하여 인증서를 생성합니다.
-req 옵션은 CSR을 사용한다는 것을 지정하고, -in 옵션으로 CSR 파일의 경로를 지정합니다.
-signkey 옵션을 사용하여 암호화된 개인키 파일(private.key)을 지정하고, -out 옵션으로 생성된 인증서 파일의 경로를 지정합니다.
인증서와 개인키의 유효성 확인 예제
OpenSSL을 사용하여 인증서와 개인키의 유효성을 확인하는 예제입니다.
인증서와 개인키가 일치하는지, 유효 기간이 만료되지 않았는지 등을 확인할 수 있습니다.
$ cd /tmp/test_openssl_3
$ openssl x509 -noout -modulus -in certificate.crt | openssl md5
$ openssl rsa -noout -modulus -in private.key | openssl md5
위의 예제에서는 x509 명령어를 사용하여 인증서의 modulus 값을 추출하고, rsa 명령어를 사용하여 개인키의 modulus 값을 추출합니다.
두 값이 일치하는지 확인하여 인증서와 개인키가 일치하는지를 판단할 수 있습니다.
인증서와 개인키의 일치 여부를 판단하는 방법은 modulus 값이 동일한지를 확인하는 것입니다.
PKCS#12 파일 생성과 추출 예제
OpenSSL을 사용하여 PKCS#12 파일을 생성하고 추출하는 예제입니다.
PKCS#12 파일은 인증서와 개인키를 하나의 파일로 결합하는 형식입니다.
이 형식은 보안을 강화하고 인증서와 개인키를 쉽게 전달하고 관리하는 데 사용됩니다.
$ cd /tmp/test_openssl_3
$ openssl pkcs12 -export -out certificate.pfx -inkey private.key -in certificate.crt
$ openssl pkcs12 -info -in certificate.pfx
$ openssl pkcs12 -nocerts -in certificate.pfx -out private.key
$ openssl pkcs12 -clcerts -nokeys -in certificate.pfx -out certificate.crt
위의 예제에서는 pkcs12 명령어를 사용하여 PKCS#12 파일을 생성하고 추출합니다.
-export 옵션을 사용하여 PKCS#12 파일을 생성하고, -out 옵션으로 생성된 PKCS#12 파일의 경로를 지정합니다.
-inkey 옵션을 사용하여 개인키 파일(private.key)을 지정하고, -in 옵션을 사용하여 인증서 파일(certificate.crt)을 지정합니다.
또한, pkcs12 명령어를 사용하여 PKCS#12 파일에서 개인키 또는 인증서를 추출할 수도 있습니다.
-info 옵션은 PKCS#12 파일의 정보를 출력하며, -nocerts 옵션은 개인키를 추출하고, -clcerts 옵션은 인증서를 추출합니다.
SSL/TLS 서버 설정 예제
OpenSSL을 사용하여 SSL/TLS 서버를 설정하는 예제입니다.
SSL/TLS은 네트워크 통신의 보안을 강화하기 위해 사용되는 프로토콜입니다.
OpenSSL을 사용하여 SSL/TLS 서버를 구축하는 방법을 알아봅시다.
$ cd /tmp/test_openssl_3
$ openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr
$ openssl x509 -req -in server.csr -signkey server.key -out server.crt
$ openssl s_server -cert server.crt -key server.key -accept 8882 -www
위의 예제에서는 먼저 req 명령어를 사용하여 서버용 개인키와 CSR을 생성합니다.
-newkey rsa:2048 옵션은 2048비트 RSA 키를 생성하고, -nodes 옵션은 개인키를 암호화하지 않도록 지정합니다.
생성된 개인키는 server.key 파일로 저장됩니다.
다음으로 x509 명령어를 사용하여 CSR을 사용하여 서버용 인증서를 생성합니다.
-req 옵션은 CSR을 사용한다는 것을 지정하고, -in 옵션으로 CSR 파일(server.csr)을 지정합니다.
-signkey 옵션을 사용하여 서버용 개인키 파일(server.key)을 지정하고, -out 옵션으로 생성된 서버용 인증서 파일(server.crt)의 경로를 지정합니다.
마지막으로 s_server 명령어를 사용하여 SSL/TLS 서버를 실행합니다.
-cert 옵션으로 서버용 인증서 파일(server.crt)을 지정하고, -key 옵션으로 서버용 개인키 파일(server.key)을 지정합니다.
-accept 옵션으로 서버가 바인딩할 포트 번호를 지정하고, -www 옵션은 서버가 정적 웹 컨텐츠를 제공한다는 것을 지정합니다.
위의 예제를 통해 OpenSSL 명령어를 활용하여 암호화된 개인키를 이용한 인증서 생성, 인증서와 개인키의 유효성 확인, PKCS#12 파일 생성과 추출, 암호화된 파일 생성과 복호화, SSL/TLS 서버 설정 등 다양한 작업을 수행할 수 있습니다.