次のシナリオが必要です。
- 自分のCAを作成する
- サーバー証明書を作成し、CAで署名します
- 複数のクライアント証明書を作成し、CAで署名します
次に、CAによって署名された証明書を提示するすべてのクライアントを認証したいと思います。
すべてのクライアント証明書をTomcatキーストアに追加せずに、このようなシナリオを実現することは可能ですか?クライアントが提示する証明書が私のCAによって発行および署名されているかどうかのみを確認したいと思います。
はい、それは確かに可能です、そして私はまさにこれをしました。CA証明書を含むトラストストアを使用してTomcatを構成する場合、そのCAによって署名されたクライアント証明書を受け入れる必要があります。
CAキーとルート証明書がすでに生成されており、それを使用してCSRを証明書に変換する方法を知っていると仮定します。
最初にサーバーキーと対応するCSRを生成します
$ openssl genrsa -out XXX.key 2048
$ openssl req -new -nodes -key XXX.key -out XXX.csr
CA証明書を使用してCSRに署名し、サーバー証明書を作成しますXXX.crt
。次に、サーバーキー、サーバー証明書、およびCA証明書を単一のPKCS#12ファイルにパッケージ化します。
$ cat XXX.crt ca-certificate.pem | openssl pkcs12 -export -inkey XXX.key -out XXX.p12 -name tomcat -caname myauthority
このプロセスによっていくつかのパスワードの入力を求められ、それらをすべて同じ値に設定します(この値が何であるかは関係なく、安全なパスワードである必要はありません。空でない必要があります-I使用changeit
)。
この.p12
ファイルは、Tomcatのキーストアとして機能できるようになりました。次に、トラストストアとして使用するCA証明書のみを含む別のJKSキーストアを作成する必要があります。
$ keytool -import -alias myauthority -keystore truststore.jks -file ca-certificate.pem
繰り返しますが、すべてのパスワードプロンプトに、。などの同じ空でないパスワードで応答しますchangeit
。
最後に、Tomcatを構成できます。
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
connectionTimeout="20000"
keystoreFile="${catalina.home}/conf/XXX.p12"
keystoreType="PKCS12"
keystorePass="changeit"
truststoreFile="${catalina.home}/conf/truststore.jks"
truststoreType="JKS"
truststorePass="changeit"
clientAuth="true" sslProtocol="TLS" />
免責事項:自己署名ルート証明書は、開発環境でのみ使用してください。
より完全な概要(ステップバイステップ)について:
Create a root certificate
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 365
Create a key and CSR
openssl genrsa -out mycert.key 2048
openssl req -new -nodes -key mycert.key -out mycert.csr
Sign the CSR with your root certificate
openssl x509 -req -in mycert.csr -CA cert.pem -CAkey key.pem -CAcreateserial -out mycert.pem
Create a PKCS#12 certificate with the cert and key
openssl pkcs12 -export -out mycert.p12 -inkey mycert.key -in mycert.pem
Create a separate JKS keystore containing just the CA certificate (to use as the truststore)
keytool -import -alias my-ca -keystore truststore.jks -file cert.pem
これは、IanRobertsのTomcat構成で機能します。
openSSL:http://openssl.org/を参照する必要があります。 または、既存のCAが無料で必要な場合(ただし、毎月実行する必要があります) :http: //www.startssl.com/