前提
Linux、Apacheの環境でウェブサイトに商用のクライアント証明書の認証環境を構築しています。
尚、ウェブサイトにはSSLサーバ証明書を適用済です。
実現したいこと
クライアント証明書をインストールしているデバイスからのみアクセスできるようにしたい。
発生している問題・エラーメッセージ
Chromeブラウザからアクセス時デバイスにインストールされているクライアント証明書を選択するところまで
進みましたが選択後、ERR_BAD_SSL_CLIENT_AUTH_CERT のエラーが表示されます。
エラーメッセージ このサイトは安全に接続できません<ドメイン名> でログイン証明書が承認されなかったか、ログイン証明書が提示されていない可能性があります。 システム管理者にお問い合わせください。 ERR_BAD_SSL_CLIENT_AUTH_CERT
原因だと推測しているが対応方法がわからない点
SSLサーバ証明書及びクライアント証明書共に発行元のルートはSecitgoを使用していますが以下のように中間証明書が異なります。
SSLサーバ証明書の階層構造
Sectigo(AAA) └USERTrust RSA Certification Authority └Sectigo RSA Domain Validation Secure Server CA └<ドメイン名>
クライアント証明書の階層構造
Sectigo(AAA) └USERTrust RSA Certification Authority └Sectigo RSA Client Authrntication and Secure Email CA └<クライアント証明書のサブジェクト>
この為、サーバ側のSSLの設定箇所になる SSLCACertificateFileは次のように設定しています。
USERTrust RSA Certification Authority
Sectigo RSA Domain Validation Secure Server CA
Sectigo RSA Client Authrntication and Secure Email CA
※実際は**----- BEGIN CERTIFICATE -----** から **----- END CERTIFICATE -----**までのデータを上記の順に結合したものになります。
またサーバ側の設定は以下になります。
/etc/httpd/conf.d/ssl.conf
SSLProtocol -all +TLSv1.2 SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES SSLCertificateFile <SSLサーバ証明書ファイル> SSLCertificateKeyFile <SSLサーバ証明書秘密鍵> SSLCACertificateFile <中間証明書(SSLサーバ証明書用とクライアント証明書用を結合したもの)> SSLVerifyClient require SSLVerifyDepth 2
またサーバソフトウェアがnginxの場合、クライアント証明書の中間証明書は ssl_client_certificate
に、このパスを指定するようです。
Apacheの場合、これに類似する情報があるのではと調べましたが確認する事ができませんでした。
情報がありましたら教えてください。
お願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。