GeekFactory

int128.hatenablog.com

OpenSSLの証明書作成スクリプト(CA.sh)を理解する

サーバ証明書はOpenSSLに付属のスクリプトで簡単に作れますが、中で何をやってるのか分かりません。ここではopensslのコマンドを調べながら、一つ一つのステップを調べていきます。

/etc/ssl/openssl.cnfは適当に設定しておいてください。ファイルパスが合っていればOKかと思います。

新しい認証局を作る

スクリプトだと./CA.sh -newcaに相当する手順です。

認証局のファイルは/etc/ssl/CAに入れるものとします。

mkdir /etc/ssl/CA
chmod 700 /etc/ssl/CA
cd /etc/ssl/CA

認証局秘密鍵を生成します。ここでは2048bitを指定しています。

openssl genrsa -out ca.key 2048

CSRを作成します。

openssl req -new -days 3650 -key ca.key -out ca.csr

/etc/ssl/openssl.cnfを編集し、CA証明書を作成する設定に変更します。

#x509_extensions        = usr_cert              # The extentions to add to the cert
x509_extensions = v3_ca

自己署名して証明書を作成します。

mkdir newcerts certs crl private
touch index.txt
echo 00 > serial

openssl ca -in ca.csr -out ca.crt -keyfile ca.key -selfsign -days 3650

サーバ側のCSRを生成する

スクリプトだと./CA.sh -newreqに相当する手順です。

サーバ証明書は/etc/apache2/sslに入れるものとします。

chmod 700 /etc/apache2/ssl
cd /etc/apache2/ssl

サーバの秘密鍵を生成します。

openssl genrsa -out server.key 1024

CSRを作成します。

openssl req -new -days 3650 -key server.key -out ca.csr

認証局で署名する

スクリプトだと./CA.sh -signに相当する手順です。

/etc/ssl/openssl.cnfを編集し、サーバ証明書を作成する設定に変更します。

x509_extensions        = usr_cert              # The extentions to add to the cert
#x509_extensions = v3_ca

CSRに署名します。

openssl ca -in /etc/apache2/ssl/server.csr -out /etc/apache2/ssl/server.crt

これでサーバ証明書の完成です。