1. Генерация хранилища с сертификатом
keytool -genkey -alias [some-alias] -keyalg RSA
2. Импорт сертификата в хранилище
keytool -import -keystore [keystorename.jks] -file [certificate.pem] -alias [some-alias]
3. Экспортировать сертификат с приватным ключом из PKSC12 в keystore:
keytool -importkeystore -deststorepass [keystorepass] -destkeystore [keystorename.jks] -srckeystore [pkcs12filecertname.p12] -srcstoretype PKCS12 -srcstorepass [keystorepass] -srcalias [src-alias] -destalias [dest-alias]
deststorepass и srcstorepass должны совпадать.
4. Посмотреть список сертификатов в хранилище
keytool -list -v -keystore [keystorename.jks]
Обращаем внимание на параметр Entry type
В случае Entry type: trustedCertEntry
в хранилище будет содержаться только сертификат без приватного ключа и SSL не заведется. Должно быть Entry type: PrivateKeyEntry
5. Экспорт сертификата из хранилища
keytool -export -keystore [keystorename.jks] -alias [some-alias] -storepass [keystorepass] -file [cert-file-name.pem]
6. Смена алиаса
keytool -changealias -alias "old-alias" -destalias "new-alias" -keystore [keystorename.jks]
7. Конвертация хранилища из JKS в PKCS12
keytool -importkeystore -srckeystore [keystorename.jks] -destkeystore [keystorename] -deststoretype pkcs12
8. Удаление сертификата с определенным алиасом из хранилища
keytool -delete -alias [some-alias] -keystore [keystorename.jks]
9. Пример коннектора, работающего по HTTPS с самоподписанным сертификатом
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="[keystorename]"
certificateKeystorePassword="[keystorepass]"
keyAlias="[some-alias]"
truststoreType="PKCS12" />
</SSLHostConfig>
</Connector>