SSL証明書更新についてメモ


最近仕事でSSL証明書の更新作業が多いので、覚えているうちにコマンドなどのメモ

CSRや秘密鍵のファイル名、発行された証明書のファイル名はコモンネームにして管理したほうが分かりやすいです。

秘密鍵ファイルのパーミッションには注意してください。

環境、バージョンの想定

cat /etc/redhat-release 
CentOS release 6.7 (Final)

rpm -q openssl
openssl-1.0.1e-42.el6_7.4.x86_64

httpd -v
Server version: Apache/2.2.15

秘密鍵作成(パスフレーズ無し)

openssl genrsa -out example.com.key 2048

秘密鍵作成(パスフレーズ有り)

opnessl genrsa -des3 -out example.com.key 2048

パスフレーズを後から外すこともできる。

copy example.com.key example.com.key-old
openssl rsa -in example.com.key -out example.com.key

CSR作成

openssl req -new -key example.com.key -out example.com.csr

認証局にSSL証明書の申し込みをする

作成したCSR使って、認証局にSSL証明書の申請。

認証局から証明書が発行されたらサーバにインストール(差し替え)

ここはWebサーバのapacheを使用している想定。(メールサーバとかで指定するときも、あまり変わらんです。)
ssl.conf
証明書ファイル
SSLCertificateFile /証明書までのパス/example.com.crt
中間証明書ファイル
SSLCertificateChainFile /中間証明書までのパス/example.com.chain.crt
秘密鍵ファイル
SSLCertificateKeyFile /秘密鍵までのパス/exapmle.com.key

暗号スイート等はここでは省略。

証明書の整合性確認

下記のそれぞれの出力結果を比較し、相違がないことを確認する。

秘密鍵
openssl rsa -pubout -in example.com.key | openssl sha1

SSLサーバ証明書
openssl x509 -noout -pubkey -in example.com.crt | openssl sha1

サーバ再起動

ここもapacheを想定

apachectl -k graceful

証明書のインストールができたら確認する

webサーバの証明書ならブラウザから簡単に確認できる。

ここではコマンドで確認する方法をメモ。(メールサーバ(SMTPS, POP3S)などの証明書を確認したいときに使える)
※以下はHTTPSの例です。

openssl s_client -connect example.com:443 -showcerts

これで、Verify return code: 0 (ok)という文字列が最後の方に出てきていれば設定上の問題はないです。