使用jdk自带的工具生成数字证书

一、为服务器生成证书
keytool -genkey -alias tomcat -keyalg RSA -keystore /www/wdlinux/my.keystore -dname "CN=mytomcat.com, OU=mytomcat.com, O=mytomcat.com, L=SH, ST=SH, C=CN" -keypass changeit -storepass changeit -validity 36500

-genkey表示要创建一个新的密钥
-alias密钥的别名
-keyalg使用加密的算法,这里是RSA
-keystore 密钥保存在D:盘目录下的mykeystore文件中
-keypass私有密钥的密码,这里设置为changeit
-storepass 存取密码,这里设置为changeit,这个密码提供系统从mykeystore文件中将信息取出 
-validity该密钥的有效期为 36500表示100年 (默认为90天) 

使用-dname一次性将参数填写完。

-dname表示密钥的Distinguished Names, 
CN=mytomcat.com 
OU=mytomcat.com 
O=mytomcat.com 
L=SH 
S=SH 
C=CN 
Distinguished Names表明了密钥的发行者身份

输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
  [Unknown]:  mytomcat.com        # 此处要写域名或者:  localhost
您的组织单位名称是什么?
  [Unknown]:  mytomcat.com
您的组织名称是什么?
  [Unknown]:  mytomcat.com
您所在的城市或区域名称是什么?
  [Unknown]:  SH
您所在的省/市/自治区名称是什么?
  [Unknown]:  SH
该单位的双字母国家/地区代码是什么?
  [Unknown]:  CN
CN=mytomcat.com, OU=mytomcat.com, O=mytomcat.com, L=SH, ST=SH, C=CN是否正确?
  [否]:  y
 
正在为以下对象生成 2,048 位RSA密钥对和自签名证书 (SHA256withRSA) (有效期为 36,50
0 天):
         CN=mytomcat.com, OU=mytomcat.com, O=mytomcat.com, L=SH, ST=SH, C=CN
输入 <tomcat> 的密钥口令
        (如果和密钥库口令相同, 按回车):
再次输入新口令:
[正在存储/www/wdlinux/my.keystore]
 

将mytomcat.com写入/etc/hosts中, 127.0.0.1 mytomcat.com 

二、为客户端生成证书
keytool -genkey -v -alias client -keyalg RSA -storetype PKCS12  -keystore /www/wdlinux/client.p12 -validity 36500 
"CN=mytomcat.com, OU=mytomcat.com, O=mytomcat.com, L=SH, ST=SH, C=CN"


三. 让服务器信任客户端证书
keytool -export -alias client -keystore /www/wdlinux/client.p12 -storetype PKCS12  -storepass changeit -rfc -file /www/wdlinux/clientforserver.cer

 

  • 将该文件导入到服务器的证书库,添加为一个信任证书:

keytool -import -v -file /www/wdlinux/clientforserver.cer -keystore /www/wdlinux/tomcat.keystore

  • 查看证书信息:完成之后通过list命令查看服务器的证书库,可以看到两个证书,一个是服务器证书,一个是受信任的客户端证书:

keytool -list -v -keystore /www/wdlinux/my.keystore -storepass changeit

四、让客户端信任服务器证书
keytool -export -alias tomcat -keystore /www/wdlinux/my.keystore -file /www/wdlinux/CA.cer

五、客户端安装证书
现得到如下四个证书文件
CA.cer
client.p12
clientforserver.cer
my.keystore


注:在客户端双击运行client.p12,一直点击下一步,直到显示导入成功。

六、修改tomcat参数发布服务
tomcat/bin/server.xml中修改

1、注释掉8080端口配置  (不是必须,也可以不注释,不注释的话,则http 8080端口也可以访问)

<!--<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />-->

2、取消注释8443端口配置,修改内容:

tomcat8.5版本以上修改方式:

tomcat8.5以上版本的修改方式:
将
 <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
        <SSLHostConfig>
            <Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>
修改成:
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" 
               keystoreFile="/www/wdlinux/my.keystore" keystorePass="changeit"
               >
        <!--<SSLHostConfig>
            <Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
                         type="RSA" />
        </SSLHostConfig>-->
    </Connector>

tomcat8.0版本修改方式:

tomcat8.0的server.xml文件应该这样改动:

server.xml配置:
将
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
         maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
         clientAuth="false" sslProtocol="TLS" />
修改成:
<Connector  port="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true"
maxThreads="150"
scheme="https"
secure="true"
clientAuth="true"
sslProtocol="TLS"
keystoreFile="/www/wdlinux/my.keystore"
keystorePass="changeit"
truststoreFile="/www/wdlinux/my.keystore"
truststorePass="changeit" />

属性说明:
clientAuth:设置是否双向验证,默认为false,设置为true代表双向验证
keystoreFile:服务器证书文件路径
keystorePass:服务器证书密码
truststoreFile:用来验证客户端证书的根证书,此例中就是服务器证书
truststorePass:根证书密码
注意:
① 设置clientAuth属性为True时,需要手动导入客户端证书才能访问。
② 要访问https请求 需要访问8443端口,访问http请求则访问Tomcat默认端口(你自己设置的端口,默认8080)即可。

注:强制https访问

在 tomcat /conf/web.xml 中的 </welcome- file-list> 后面加上这
<login-config>    
<!-- Authorization setting for SSL -->    
<auth-method>CLIENT-CERT</auth-method>    
<realm-name>Client Cert Users-only Area</realm-name>    
</login-config>    
<security-constraint>    
<!-- Authorization setting for SSL -->    
<web-resource-collection >    
<web-resource-name >SSL</web-resource-name>    
<url-pattern>/*</url-pattern>    
</web-resource-collection>    
<user-data-constraint>    
<transport-guarantee>CONFIDENTIAL</transport-guarantee>    
</user-data-constraint>    
</security-constraint> 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值