公開日: 2012年8月10日 17:25:58
最終更新: 2012年9月22日 13:38:01

サーバ証明書の発行

サーバ証明書の発行

サーバ秘密鍵の作成

Apache の電子証明書を作成します。CAの秘密鍵を作ったときと同じ手順でサーバ証明書を発行します。

server.keyというサーバの秘密鍵ができました。

秘密鍵からサーバのx509証明書発行要求(CSR)を作成

CAの証明書を作ったときのようにCSRを作成します。
重要: Organization Name は CA と同じものを、CommonName(CN) にはサーバの URL を入れてください。 CN の値と URL の値が違うと、ブラウザで注意されます。 こうしてできた x509 証明書発行要求が server.csr です。

CSR に CA が署名してサーバ証明書を発行

x509 証明書発行要求には誰かに署名してもらってはじめて証明書になります。 署名は秘密鍵を使って行うので、秘密鍵があれば誰でも署名できます。 もちろん、自分の秘密鍵で署名することもできます。これが自己署名の証明書です。 今回はせっかく CA をたてたのでCAの署名をして証明書を発行します。

うまく署名ができない場合は、openssl.cnf の CA まわりの設定が間違っている可能性があります。 こうしてできた server-ca.crt がプライベート CA によって署名されたサーバ証明書になります。

サーバ秘密鍵と証明書の配置

秘密鍵 (server.key) と証明書 (server-ca.crt) を Apache mod_ssl が使えるように配置します。

サーバの秘密鍵は他の人に盗まれると困るので、パーミッションを設定して、コピーを作らずにそのまま移動させましょう。サーバ証明書は公開ものなのでそれほど神経質になる必要はありません。
つづいて Apache の設定です。 ssl 関連の設定は conf/extra/httpd-ssl.conf を編集します。

# 自分のサーバ証明書の場所を指定
SSLCertificateFile /usr/local/httpd/ssl/server-ca.crt


# サーバ秘密鍵の場所を指定
SSLCertificateKeyFile /usr/local/httpd/ssl/server.key

# サーバ証明書を署名したCAの証明書がさらに他のCAによって署名されて
# いる場合、rootCAまでの証明書のリストを置きます
# 今回はプライベートCAがrootCAになっているのでコメントアウト
#SSLCertificateChainFile /usr/local/httpd/ssl/ssl.crt/ca.crt

conf/httpd.conf にも設定が必要です。
shmcb、mod_ssl がロードされるよう以下の行をアンコメントします。

LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so

conf/extra/httpd-ssl.conf を読み込むよう、以下の行をアンコメントします。

# Secure (SSL/TLS) connections
Include conf/extra/httpd-ssl.conf
#
# Note: The following must must be present to support
#       starting without SSL on platforms with no /dev/random equivalent
#       but a statically compiled-in mod_ssl.
#
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

完了したらApacheを再起動します。