証明書をSHA-1からSHA-2へ移行

自分のサーバーにスマホChromehttps接続するとエラーになる現象に遭遇。

エラー内容は「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がメールが返ってくるので、メールから該当ページを開きます。

 

アクセスするとこんな感じ。こちらも素っ気ない

f:id:naoyukinagano:20170626224508p:plain

 

左にあるReissue Certificateが再発行なので、これをクリック。

 

f:id:naoyukinagano:20170626224758p:plain

 

「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にあります。

https://knowledge.rapidssl.com/support/ssl-certificate-support/index?page=content&actp=CROSSLINK&id=SO28590

 

上のリンク先にある

-----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 ]

 

これで無事にアクセスできるはず。