相互証明書認証を実装し、次の手順を正常に完了しました。
- ルートCAの生成(自己署名)
- サーバー証明書を生成し、CA秘密鍵で署名
- ユーザー証明書を生成し、CA秘密鍵で署名
- server.crtをブラウザの「認証局」にインポートし、user.crtを「証明書」にインポートします。
次の行を追加して ssl.conf を設定します。
SSLCertificateKeyFile /home/safaa/rootca/certs/server.key SSLCertificateFile /home/safaa/rootca/certs/server.crt SSLCACertificateFile /home/safaa/rootca/certs/rootca.crt SSLVerifyDepth 10 SSLVerifyClient require
フローチャートに中間証明書を追加したので、手順は次のとおりです。
- ルートCAの生成(自己署名)
- サーバーCAを作成し、CA秘密鍵で署名します。
- サーバー証明書を生成し、サーバーCA秘密鍵で署名します。
- ユーザー証明書を生成し、サーバーCA秘密鍵で署名します。
- server.crtをブラウザの「認証局」にインポートし、user.crtを「証明書」にインポートします。
次の行を追加して ssl.conf を設定します。
SSLCertificateKeyFile /home/safaa/serverCA/certs/server.key SSLCertificateFile /home/safaa/serverCA/certs/server.crt SSLCACertificateFile /home/safaa/serverCA/certs/serverCA.crt SSLVerifyDepth 10 SSLVerifyClient require
httpdサービスを再起動しようとすると、service httpd restartというメッセージが表示されます。
#sudo service httpd start
Starting httpd: [FAILED]
#sudo service httpd status
httpd is stopped
私は成功せずに行にコメントを付けてコメントを解除しようとしました。
SSLCertificateChainFile /home/safaa/rootca/certs/rootca.crt
SSLCACertificateFile /home/safaa/serverCA/certs/serverCA.crt
また、私が生成したすべての証明書が検証され、5つの証明書がすべて検証されています。また、rootca&&serverCAフォルダの所有者と権限を変更して、ssl.confと同じにしました。 ps:私はPHP用のbashを実行しています。
私が逃したものは何ですか?誰かがSSLを設定する代わりに、Linuxで信頼できるリポジトリを使用できると言いました。これは可能ですか?私のCAをLinuxに追加すると、Verisignとして表示されます! ?
答え1
他の回答を探している間、提案された以前の質問に答えます。
通常、自己署名されていない場合は、サーバー証明書をブラウザに追加する必要はありません。これが信頼チェーンの完全な目的です。どこからでもルートを信頼アンカーとして使用しない場合は、中間CAを作成する手間がかかりません。
私はまた、あなたがこのガイドラインの目的や効果を完全に理解していないと思います。 Apacheのドキュメントで確認することをお勧めします。ここ。最初に探したいのは次のとおりです。SSLCA証明書ファイル
私の元のコメントは文書によるとSSL証明書ファイル中間証明書も同じファイルからロードする必要があります(中間および(オプション?)ルート証明書をserver.crtに追加するだけです)。これにより、ルートCAの証明書を単一のサーバー証明書ではなく信頼できるCAとしてブラウザにインポートできます。
また見なさい:この回答相互認証に関するさらなる議論