标签:des style http java os 使用 io 文件 ar
StartCom可以免费的为大家提供免费的SSL证书,可以到官网申请。
整个注册过程比较简单,但在注册及使用的时候有几点需要注意的地方:
进入"Control Panel", 选择"Validation Wizard", 根据步骤一步步的验证域名。
进入"Control Panel",选择"Certificates Wizard", 在target处选择"Web server SSL/TLS certificate", 根据向导提示,创建密钥进而创建证书。
如果不需要双向认证的话,ssl.key可以不需要解密,如果需要使用双向认证的话,则需要先把ssl.key进行解密后再创建PKCS#12(PFX)文件,否则会报错。
Caused by: java.io.IOException: DerInputStream.getLength(): lengthTag=109, too big. at sun.security.util.DerInputStream.getLength(DerInputStream.java:561) at sun.security.util.DerValue.init(DerValue.java:365) at sun.security.util.DerValue.<init>(DerValue.java:320) at sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:1220) at java.security.KeyStore.load(KeyStore.java:1214) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getStore(JSSESocketFactory.java:392) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getTrustStore(JSSESocketFactory.java:343) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getTrustManagers(JSSESocketFactory.java:599) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getTrustManagers(JSSESocketFactory.java:511) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.init(JSSESocketFactory.java:434) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(JSSESocketFactory.java:181) at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:398) at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:646) at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:434) at org.apache.coyote.http11.AbstractHttp11JsseProtocol.init(AbstractHttp11JsseProtocol.java:119) at org.apache.catalina.connector.Connector.initInternal(Connector.java:978) ... 13 more
点击Control Panel中的Toolbox,找到create pkcs#12(pfx)文件,根据向导创建文件,注意这里的密钥需要是解密后的密钥,如果是加密的,则会在双向认证的时候报上面的错误。
编辑${CATLINA_HOME}/conf/server.xml。
直接使用从网站上创建的p12文件, 注意clientAuth需要设置成false
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" keystoreFile="/home/hotleave/.server.p12" keystorePass="changeit" keystoreType="PKCS12" clientAuth="false" sslProtocol="TLS" />
双向认证时,无法使用使用了加密的密钥创建的p12文件,如果之前创建的是加密的,则可以先用toolbox中的Decrypt Private Key进行解密再创建p12文件。
1. 双向认证时,无法再直接使用p12文件,需要改成java的keystore文件(假设从startssl中创建的p12文件保存在"~/.server.p12")
keytool -importkeystore -destkeystore server.jks -srckeystore ~/.server.p12 -srcstoretype PKCS12
2. 创建客户端证书,alias参数可以随意指定
keytool -genkey -v -alias client -keyalg RSA -storetype PKCS12 -keystore client.p123. 导出客户端证书的公钥,alias参数要与上一步指定的相同
keytool -export -alias client -keystore client.p12 -storetype PKCS12 -rfc -file client.cer4. 将公钥保存到keystore中供服务器使用
keytool -import -v -file client.cer -keystore clientKeys.jks
5. 接下来配置tomcat
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" keystoreFile="/home/hotleave/.server.jks" keystorePass="changeit" truststoreFile="/home/hotleave/clientKeys.jks" truststorePass="changeit" clientAuth="true" sslProtocol="TLS" />6. 运行./catalina.sh configtest检测配置结果,如果不报错,基本就算是配置成功了。
7. 启动服务,直接访问时,会提示客户端认证失败。将第2步创建的证书导入到浏览器中,再访问服务则可以正常访问。
标签:des style http java os 使用 io 文件 ar
原文地址:http://my.oschina.net/hotleave/blog/306366