web-dev-qa-db-ja.com

Ubuntu 16.04のルート証明書の問題

Ubuntu 16.04を実行している新しいWebアプリケーションサーバーを構成しています。私がやった「珍しい」ことは、php7ではなくphp 5.6をインストールすることだけです。しかし、Pp5.6には有効なルート証明書が必要であり、これを気にするさまざまなアプリでエラーが発生しています。カール、cronなど.

これを改善することなく解決するために、さまざまな修正を試みました。といった:

https://github.com/composer/composer/issues/3346#issuecomment-7659376

https://stackoverflow.com/questions/35821245/github-server-certificate-verification-failed/35824116#35824116

ルート証明書のインストール方法

まだ運がありません。私が実行しているcronジョブはまだ生成されます:

curl: (60) server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

詳細はこちら: http://curl.haxx.se/docs/sslcerts.html

curlは、デフォルトで、認証局(CA)公開鍵(CA証明書)の「バンドル」を使用してSSL証明書の検証を実行します。デフォルトのバンドルファイルでは不十分な場合は、-cacertオプションを使用して代替ファイルを指定できます。

このHTTPSサーバーがバンドルで表されるCAによって署名された証明書を使用する場合、証明書の問題が原因で証明書の検証が失敗した可能性があります(有効期限が切れているか、URLのドメイン名と一致しない可能性があります)。

Curlによる証明書の検証を無効にする場合は、-k(または--insecure)オプションを使用します。

1
Rob Brandt

Webサーバー証明書の有効性を確認することをお勧めします。説明する手順は正しいですが、証明書に関する事実を取得しましょう。

以下の手順では、Webサーバー証明書のトラブルシューティングに使用します。

  • 件名の/ CNオプションに予想されるサーバー名があるかどうかを確認します。

(SERVER_COMMON_NAMEは連絡するWebサーバーです)

 echo | openssl s_client -servername ${SERVER_COMMON_NAME} \
    -connect ${SERVER_COMMON_NAME}:443 2>/dev/null | \
    openssl x509 -noout -subject

CAが期待するものであるかどうかを確認します(証明書の提供者):

echo | openssl s_client -servername ${SERVER_COMMON_NAME} \
            -connect ${SERVER_COMMON_NAME}:443 2>/dev/null | \
        openssl x509 -noout -issuer

発行者行の/ CNフィールドを確認します。

  • 証明書の日付を確認してください
 echo | openssl s_client -servername $ {SERVER_COMMON_NAME}\
 -connect $ {SERVER_COMMON_NAME}:443 2>/dev/null |\
 openssl x509 -noout -dates 

「notBefore」および「notAfter」の結果を確認します。

  • 上記が適切に見える場合、curlでテストし、CAルート証明書ファイルを指定します。

    curl --cacert certs/the_ca.cert.pem -I https:// $ {SERVER_COMMON_NAME}:443

--cacertオプションが機能する場合は、CAルートファイルがシステム全体で認識されているかどうかを確認します。

--cacertを省略します。 curlでエラーが発生した場合、ca-root-fileはシステムのca-certificatesディレクトリにインストールされていません。

1
Rob Lassche