我正在运行一个使用Apache Tomcat的应用程序,我正在寻找一种自动化的方法来从头开始重新创建Java Key Store(JKS)。该应用程序正在使用类似的配置
server.xml
...
<Service name="Webservice">
<Connector port="8080" protocol="HTTP/1.1"
maxThreads="150" scheme="http"
connectionTimeout="20000"
enableLookups="false" redirectPort="8443"/>
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true" connectionTimeout="20000"
keyAlias="webservice" keystoreFile="/opt/webservice/webservice.jks" keystorePass="Passw0rd!"
clientAuth="false" sslProtocol="TLSv1.2" sslEnabledProtocols="TLSv1.2"/>
...
即如果证书过期或权限正在更改,如何在脚本中从头开始重新创建完整的密钥库?
需要采取哪些步骤?
这必须包括为服务以及CSR生成私钥的步骤。
最佳答案
经过一些研究和测试,我发现了以下方法:
产生企业社会责任
WEBSERVICE="webservice"
PASSWORD='Passw0rd!'
openssl genrsa -out ${WEBSERVICE}.key 2048 creates=${WEBSERVICE}.key
openssl req -new -out ${WEBSERVICE}.csr -key ${WEBSERVICE}.key -config ${WEBSERVICE}.conf
使用CSR向PKI请求CER,然后继续进行。
生成JKS
openssl pkcs12 -export \
-in ${WEBSERVICE}.cer -inkey ${WEBSERVICE}.key \
-out ${WEBSERVICE}.p12 -name ${WEBSERVICE} \
-password pass:${PASSWORD}
keytool -importkeystore \
-srckeystore ${WEBSERVICE}.p12 -srcstoretype pkcs12 -srcalias ${WEBSERVICE} \
-srcstorepass ${PASSWORD} \
-destkeystore ${WEBSERVICE}.jks -deststoretype jks -destalias ${WEBSERVICE} \
-deststorepass ${PASSWORD}
最后包括来自PKI的连锁店。
信任证书链
keytool -import -trustcacerts \
-alias issuer -file issuer.pem \
-keystore ${WEBSERVICE}.jks -storepass ${PASSWORD}
keytool -import -trustcacerts \
-alias intermediate -file intermediate.pem \
-keystore ${WEBSERVICE}.jks -storepass ${PASSWORD}
keytool -import -trustcacerts \
-alias root -file root.pem \
-keystore ${WEBSERVICE}.jks -storepass ${PASSWORD}
最后得到一个新创建的
webservice.jks
文件。复制到
/opt/webservice/webservice.jks
并重新启动Web服务之后,新证书就位。关于java - 从头开始重新创建Java keystore (JKS),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57807085/