自分のサーバーにスマホのChromeでhttps接続するとエラーになる現象に遭遇。
エラー内容は「NET::ERR_CERT_WEAK_SIGNATURE_ALGORITHM」
ほっとこうと思ったら、影響が大きかった。
詳細を見ると、SHA-1をサポートしていないとのこと。
対処方法はSHA-2:256bit証明書の再発行しかないようです。
私が使っているのはRapidSSL。
再発行するために、RapidSSLユーザーページに行きます。
GeoTrustのユーザーページ
https://products.geotrust.com/orders/orderinformation/authentication.do
ものすごく素っ気ないページが出てくるので、対象ドメインと登録してあるeメールアドレス、そして、ロボット対策の数字を入れます。
すると、3分ほどでログインページのURLがメールが返ってくるので、メールから該当ページを開きます。
アクセスするとこんな感じ。こちらも素っ気ない
左にあるReissue Certificateが再発行なので、これをクリック。
「Hashing Algorithm:」の選択を、必ず「SHA-256 with RSA and SHA-256 root」にして、CSRを貼り付けます。
って、ホントはCSRの作成方法も書くといいんでしょうけど、256bit用のCSRはだいぶ前に作成してあったので、ここでは割愛。
サーバには"rapidssl_sha256.csr"というファイル名で保存してあったようで、それを貼り付けるために、
gentoo csr # cat rapidssl_sha256.csr
で、CSRファイルの内容をTermに表示させて、それをコピペしました。
注意点として、CSRは、
-----BEGIN CERTIFICATE REQUEST-----
という文字列で始まり、
-----END CERTIFICATE REQUEST-----
という文字列で終わります。
opensslで生成する際には拡張子は自由につけられるため、ファイル名や拡張子を誤ると、なんだかわからなくなりますが、catで先頭の文字列を確認するとわかりますね。
規約に同意してSubmitを押すと、またもやメールが飛んでくるそうです。
「RapidSSL Certificate Request Confirmation」というタイトルのメールです。
すべて英語ですが、メールの中程にあるURLをクリックすると、承認画面が現れます。
スクショ取り忘れましたが、最下部の「承認」をクリックします。
オーダーが承認されましたというページが現れます。
証明書はメールで届いていますので、差し替えます。
証明書のファイルがどれなのかわからないときは、Apache2のコンフィグを見るとわかります。
SSLCertificateFileで始まる行がそれです。
gentoo # cat /etc/apache2/vhosts.d/00_default_ssl_vhost.conf | grep SSLCertificateFile
SSLCertificateFile /etc/ssl/csr/rapidssl.crt
では、rapidssl.crtを書き換えます。
gentoo # nano /etc/ssl/csr/rapidssl.crt
すべての文字列を消して、メールで来た証明書文字列の
-----BEGIN CERTIFICATE-----
から
-----END CERTIFICATE-----
までを貼り付けて保存します。
そうですね、さっきのcsrファイルと違って、証明書は-----BEGIN CERTIFICATE-----で始まっているんですね。
これだけで再起動したら動きそうですが、GeoTrustのSSLチェッカーで中間証明書が違うと怒られてしまいました。
GeoTrust SSL Checker
https://cryptoreport.rapidssl.com/checker/views/certCheck.jsp
では、中間証明書も入れ替えます。
中間証明書の場所を調べましょう
SSLCertificateChainFileの行です。
gentoo # cat /etc/apache2/vhosts.d/00_default_ssl_vhost.conf | grep SSLCertificateChainFile
SSLCertificateChainFile /etc/ssl/csr/intermediate.crt
では、intermediate.crtを書き換えます。
RapidSSLの256bit rootのcrtは次のURLにあります。
上のリンク先にある
-----BEGIN CERTIFICATE-----
から
-----END CERTIFICATE-----
までが中間証明書ですので、これを貼り付けて保存します。
(中間"証明書"と、証明書の一種なので、サーバー証明書同様、-----BEGIN CERTIFICATE-----で始まってますね。)
gentoo # nano /etc/ssl/csr/intermediate.crt
中をすべて消して、上記の新たな中間証明書に書き換えます。
Apacheを再起動しましょう。
gentoo # # /etc/init.d/apache2 restart
* Stopping apache2 ... [ ok ]
* Starting apache2 ... [ ok ]
これで無事にアクセスできるはず。