Обновление:
Попробуйте следующий способ включить аутентификацию клиента в Tomcat.
Чтобы tomcat мог использовать преимущества аутентификации клиента, нам требуется три сертификата. То есть сертификат сервера для Tomcat, сертификат клиента для браузера и сертификат центра сертификации, который будет подписывать оба вышеупомянутых сертификата. Здесь я покажу, как это сделать в Windows.
Есть два пути.
1) У вас должен быть файл CSR, то есть запрос на подпись сертификата. Вы можете отправить его в центр сертификации, например Verisign или Comodo или многие другие подобные им. Они предоставят вам сертификат. Или
2) Вы можете создать свой собственный центр сертификации и подписать сертификаты. Но это рекомендуется делать только для личного использования.
У вас должны быть установлены Java и OpenSSL для выполнения следующих действий.
Для генерации запроса на подпись сертификата у вас должен быть ключ. Чтобы сгенерировать ключ, введите следующую команду в CMD.
openssl genrsa -out Serverkey.key 1024
При этом будет создан файл «Serverkey.key». Размер ключа 1024. Вы можете дать его согласно вашему требованию.
Теперь сгенерируйте файл CSR с помощью следующей команды.
openssl req -new -key Serverkey.key -out ServerReq.csr -config /path/to/openssl.cnf
Как только вы выполните эту команду, вас попросят дать некоторую информацию.
После этого вы найдете файл CSR в вашем каталоге. Вы можете отправить этот файл в CA. В случае, если вы делаете это для своего личного использования, и вы хотите иметь свой собственный CA, создайте ключ и CSR для своего CA с помощью приведенных выше двух команд. После того, как у вас есть CSR для CA, вы можете подписать его ключом CA с помощью следующей команды.
openssl x509 -req -days 365 -in CAReq.csr -signkey CAKey.key -out CA.crt
Получив сертификат CA, вы можете использовать его для подписи других сертификатов.
openssl x509 -req -days 365 -CA CA.crt -CAkey CAKey.key -CAcreateserial -in ServerReq.csr -out Server.crt
Вы можете использовать ту же команду и для сертификата клиента.
Браузер, который является нашим клиентом здесь, примет сертификат формата P12. Формат P12 - это файл, который содержит ваш сертификат и ключ.
Чтобы преобразовать CRT в P12, используйте следующую команду.
openssl pkcs12 -export -in Server.crt -inkey ServerKey.key -chain -CAfile CA.crt -out ServerCert.p12
В tomcat есть одно хранилище доверенных сертификатов, которое будет иметь сертификат CA, а другое - хранилище ключей, которое будет иметь ключ и сертификат сервера (файл p12).
Для импорта сертификата ЦС в хранилище доверенных сертификатов используйте следующую команду.
keytool -import -alias CertAuth -keystore caCerts.jks -file CA.crt
Вы можете указать псевдоним как хотите. Запомните пароль, который вы задаете при запросе после выполнения вышеуказанной команды. Мы будем использовать этот пароль в файле server.xml. То же самое относится к приведенной ниже команде.
Для импорта сертификата формата p12 в хранилище ключей используйте следующую команду.
keytool -importkeystore -destkeystore tomcat.keystore -srckeystore -ServerCert.p12 -srcstoretype PKCS12 -alias 1
Теперь измените файл tomcat server.xml следующим образом.
<Connector port="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true" scheme="https" secure="true"
truststoreFile="path/to/truststorefile" truststorePass="password"
keystoreFile="path/to/keystorefile" keystorePass="password"
clientAuth="true" sslProtocol="TLS"
/>
Теперь импортируйте сертификат формата P12 клиента в браузер. Затем запустите сервер Tomcat и попробуйте получить доступ к https://localhost:8443.. Вы можете посетить блог для получения подробной версии этого ответа. Надеюсь, это поможет.