なんのために何をしたか?
なにが問題?
デフォルトで配布されている以外のルートCA証明書が必要なサイトになんやかんやするには自分でルーツCA証明書を設定する必要があります。
たとえば,経産省のサイト( https://wwws.meti.go.jp )を wget や PHP の file_get_contents で取得しようとしても失敗することがあります。
たとえばこんなエラーが出ます
WGETの場合
wget https://wwws.meti.go.jp/interface/honsho/committee/index.cgi/committee
--20XX-YY-MM H:i:s-- https://wwws.meti.go.jp/interface/honsho/committee/index.cgi/committee
wwws.meti.go.jp (wwws.meti.go.jp) をDNSに問いあわせています...
wwws.meti.go.jp (wwws.meti.go.jp)|23.218.21.190|:443 に接続しています... 接続しました。
エラー: wwws.meti.go.jp の証明書(発行者: `/C=JP/O=Japanese Government/OU=GPKI/CN=ApplicationCA2 Sub')の検証に失敗しました:
自己署名証明書です。
wwws.meti.go.jp に安全の確認をしないで接続するには、`--no-check-certificate' を使ってください。
PHPの場合
PHP Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in ***
PHP Warning: file_get_contents(): Failed to enable crypto in ***
PHP Warning: file_get_contents(https://wwws.meti.go.jp/interface/honsho/committee/index.cgi/committee): failed to open stream: operation failed in ***
どうする?
CentOSにルートCA証明書を設定しましょう :)
どうやって?
1.証明書を取得しましょう。
先に挙げた経産省の例だと,政府認証基盤(GPKI) ( http://www.gpki.go.jp/ )のアプリケーション認証局2を使っていますので,「アプリケーション認証局2(Root)の自己署名証明書( http://www.gpki.go.jp/apca2/APCA2Root.der )」と,ついでに「アプリケーション認証局2(Sub)の自己署名証明書( http://www.gpki.go.jp/apca2/APCA2Sub.der )」を取ってきます。
2. CentOSに設定しましょう。
まずは,適切な置き場に配置します。
# cp APCA2Root.der /usr/share/pki/ca-trust-source/anchors
# cp APCA2Sub.der /usr/share/pki/ca-trust-source/anchors
CentOSに配置したことを教えてあげます。
# update-ca-trust extract