使用jdk自带keytool生成ssl证书,并使用tomcat搭建https

来源:互联网 发布:java程序员需要学什么 编辑:程序博客网 时间:2024/04/30 16:00

大多数情况下,网站访问目标客户并不固定,所以在这里只写了单向的ssl(仅在服务器端安装证书):

1. 首先在CMD中使用cd指令切换到jdk的keytool所在目录:“%JAVAHOME%/bin”

然后运行keytool:

keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:/tomcat.keystore -validity 3650

genkey生成方式,对称或者非对称

-alias:别名

-keyalg:加密方式,默认是DSA

-keystore:产生的SSL证书库存放位置和文件名

-validity :证书有效期,单位是天。

接下来会提示要求输入keystore的密码以及证书信息。需要注意的是:“您的名字和姓氏是什么?”这个问题后面需要输入的是域名,而不能试IP地址,如果在本地测试用,可以输入localhost。

建议tomcat的密钥口令设置一直,直接按回车。


如果要查看这个keystore:

keytool -list -v-keystoretomcat

-keystore tomcat中“tomcat”是之前设置的别名

2. 设置tomcat

进入tomcat的安装目录,找到conf文件夹,打开server.xml

找到被注释的:

<!--
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" />
    -->

去除注释,在这里端口继续使用8443

需要注意的是protocol="org.apache.coyote.http11.Http11Protocol"的写法是版本7中的写法,如果是6的话使用protocol="HTTP/1.1"

具体设置如下:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" 
keystoreFile="E:\tomcat.keystore" keystorePass="tomcat" 
ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_ CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_C BC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RS A_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA"
/>

clientAuth:指定是否需要验证客户端证书,如果该设置为“false”,则为单向SSL验证,SSL配置可到此结束。如果clientAuth设置为“true”,表示强制双向SSL验证 ,必须验证客户端证书。如果clientAuth设置为“want”,则表示可以验证客户端证书,但如果客户端没有有效证书,也不强制验证。 

keystoreFile:之前存放ssl证书的目录

keystorePass:生成SSL后设置的密码

此外需要注意的是ciphers,之前设置了ciphers="tomcat",将密码放进去,结果是;浏览器提示不支持的协议,之后改为上文中的值后,chrome和IE均可访问,仅提示不安全。


3.访问时,本地输入https://localhost:8443即可




阅读全文
0 0