近期公司列出一大堆的东西,其中包括https,啥也不想说,你们是无法理解的苦逼的我的

本文不是双向认证, 双向认证需要让客户端信任自己生成的证书,有点类似登录银行网站的情,如果想知道双向认证的同志可以点击这里

关于https这些通道可以去百度Google其原理,不废话,自动生成秘钥,需要使用jdk自带的命令keytool。关于keytool的使用请查看:这里或者这里,我这里简单的贴一下使用方式

(1)java工具keytool

常用命令:

(注:生成证书时,CN要和服务器的域名相同,如果在本地测试,则使用localhost)

keytool -genkey -alias "tomcat" -keyalg "RSA" -keystore "d:\mykeystore"  -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN" -keypass "changeit" -storepass -validity 180

参数说明:

-genkey表示要创建一个新的密钥

-dname表示密钥的Distinguished Names,

CN=commonName

OU=organizationUnit

O=organizationName

L=localityName

S=stateName

C=country

Distinguished Names表明了密钥的发行者身份

-keyalg使用加密的算法,这里是RSA

-alias密钥的别名

-keypass私有密钥的密码,这里设置为changeit

-keystore 密钥保存在D:盘目录下的mykeystore文件中

-storepass 存取密码,这里设置为changeit,这个密码提供系统从mykeystore文件中将信息取出

-validity该密钥的有效期为 180天 (默认为90天)

删除

keytool -delete -alias catest -keystore d:\mykeystore

查看

keytool -list -keystore d:\mykeystore

创建证书

1.服务器中生成证书(注:生成证书时,CN要和服务器的域名相同,如果在本地测试,则使用localhost)

keytool -genkey -alias "tomcat" -keyalg "RSA" -keystore "d:\mykeystore " -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN"-keypass "changeit" -storepass "changeit"

2.导出证书,由客户端安装:

keytool -export -alias tomcat -keystore d:\mykeystore -file d:\mycerts.cer -storepass "changeit"

3.客户端配置:为客户端的JVM导入密钥(将服务器下发的证书导入到JVM中)

keytool -import -trustcacerts -alias tomcat -keystore "%JAVA_HOME%/jre/lib/security/cacerts " -file d:\mycerts.cer(这里是证书生成的路径,不是秘钥,而且后续配置的是秘钥而不是这个证书,不要搞混了) -storepass "changeit"

之后可以看到生成了 catest.cer 文件,之后导入用,keytool的操作就完成了.

配置tomcat

如果是在eclipse上面,那么找到eclipse的service(如果不是,找到tomcat下面的server.xml文件),找到server.xml并打开:
配置如下:

<Connector SSLEnabled="true" acceptCount="100" clientAuth="false" disableUploadTimeout="true" enableLookups="false"
 keystoreFile="d:\catest.key(这里是第一步生成的秘钥位置)" keystorePass="zuecun(这里是秘钥的密码)" maxThreads="25" port="8443" 
protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https" secure="true" sslProtocol="TLS"/>

 

如果还有其他的8443端口直接注释掉

接着找到web.xml(与server.xml在同一个目录下)并打开:

在<welcome-file-list>后面配置:

    <security-constraint>
        <web-resource-collection>
            <web-resource-name>securedapp</web-resource-name>
            <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <user-data-constraint>
            <transport-guarantee>CONFIDENTIAL</transport-guarantee><!-- 如果你希望关闭 SSL ,只需要将 CONFIDENTIAL 改为 NONE 即可。 -->
        </user-data-constraint>
    </security-constraint>

然后启动服务器,直接访问会自动跳转到你配置好的https端口为8443,注意的是,你这里的证书自己创建出来的没有申请,所以会出现不安全的连接,当然这是本地测试嘛,

最后一句就是欢迎各路大神丢砖或提意见,谢谢~~~

 

 posted on 2017-05-27 14:28  _萨瓦迪卡  阅读(6173)  评论(2编辑  收藏  举报