WordPressのSSL化(RappidSSL利用)で作業を進めて、Apacheを再起動したときに、失敗(下図1)した原因究明について述べておきます。
図1:Apache再起動失敗!
[root@shigizemi ~]# service httpd restart
httpd を停止中: [失敗]
httpd を起動中: [失敗]
Apacheが停止したので、ssl.confファイルを書き戻ししてApacheを再起動しました。このようなときのためにconfファイルのバックアップを取っておくか、書き換える時に、もとの記載内容は消さずに「#」コメントアウトしておくといいですね。変更内容が少なかったので、今回は、コメントアウトしていたものを元に戻しました。
【前提条件】
- Apache+OpenSSLは動作している
- プライベートkey、サーバ証明書、中間証明書の元は正常
1.ログでエラー確認
# cat /var/log/httpd/error_log
…抜粋…
[Wed Jul 22 16:27:48 2015] [error] Init: Unable to read server certificate from file /etc/pki/tls/certs/2015shigi-crt.pem
[Wed Jul 22 16:27:48 2015] [error] SSL Library Error: 218529960 error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Wed Jul 22 16:27:48 2015] [error] SSL Library Error: 218595386 error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error
サーバ証明書(2015shigi-crt.pem)の初期化(?)のとき読み込みに失敗しているように見える。つまり、2015shigi-crt.pemが壊れているのでは?
2.google先生にお尋ね
”[error] Init: Unable to read server certificate from file /etc/pki/tls/certs/”で、google先生に質問を投げかけたら、
SSL Library Error: 218570875 error:0D07207B:asn1 encoding routines:ASN1_get_object:header too long
というサイトで、サーバ証明書が壊れているかどうか、コマンドで確認するようにアドバイスがあったので、さっそく下記のコマンドで確認してみた。
# openssl x509 -in /etc/pki/tls/certs/2015shigi-crt.pem -text -noout
unable to load certificate
3077928684:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1342:
3077928684:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:391:Type=X509_CINF
3077928684:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:tasn_dec.c:774:Field=cert_info, Type=X509
3077928684:error:0906700D:PEM routines:PEM_ASN1_read_bio:ASN1 lib:pem_oth.c:83:
エラーが発生してサーバ証明書をロードできんみたいです。まぁ、壊れてます。
3.crt(サーバ証明書)を再構築
サーバ証明書の作り方に問題があったようです。メールに記載されていたサーバ証明書をコピーし、それをUbuntu機のgeditに貼り付け、名前を2015shigi-crt.pemとしてサーバ機(CentOS)にリモートでアップしました。その過程に問題があったのか。まさか、改行コードが違うとか???
再構築(たんに作り直し)します。コピーを取るところまではUbuntu機で実行し、貼り付けは、リモートでサーバ機に接続しviで2015shigi-crt.pemを作成し、そこで貼り付けを実行しました。そして、上書き保存しました。
さて、再検証してみます。
# openssl x509 -in /etc/pki/tls/certs/2015shigi-crt.pem -text -noout
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 81660 (0x13efc)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=US, O=GeoTrust Inc., CN=RapidSSL SHA256 CA – G3
Validity
Not Before: Dec 21 18:28:43 2014 GMT
Not After : Jan 23 21:38:43 2016 GMT
Subject: OU=GT70567882, OU=See www.rapidssl.com/resources/cps (c)14, OU=Domain Control Validated – RapidSSL(R), CN=www.shigizemi.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:ea:a4:7d:10:20:5b:fa:83:4e:cb:75:a1:d4:68:
94:74:90:27:14:15:20:7b:eb:97:1c:3e:7c:4f:db:
…以下省略…
サーバ証明書がロードされています。
4.動作確認
では、Apacheの再起動です。
[root@shigizemi ~]# service httpd restart
httpd を停止中: [ OK ]
httpd を起動中: [ OK ]
よかです。
これでサーバ証明書がサーバにちゃんとインストールされました。
ApacheのSSL化(WordpressのSSL化)を続けるには、ここへ戻ります。
【結論】
Apacheの再起動が失敗したのは、サーバ証明書が壊れていたから。サーバ機にリモート接続しviでサーバ証明を作ると解決した。壊れた原因は不明。