Tomcat配置https加密连接

配置https安全连接(ssl加密连接)

https连接需要用到数字证书与数字签名(MD5算法),网站https连接首先需要申请数字证书,配置加密连接器,浏览器安装证书。

证书运用到RSA技术,RSA加密算法是一种非对称加密算法,服务器保留私钥,对外公开公钥(cer证书)。

Tomcat秘钥库类型为JKS(Java Key Storage),很容易知道这是 JAVA 的专属格式,利用 JAVA 的一个叫 keytool 的工具可以进行格式转换。一般用于 Tomcat 服务器。

生成服务端秘钥库

使用java的工具keytool产生数字证书,tomcat.keystore可以写在需要生成的路径。

keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "tomcat.keystore"   //生成秘钥库,并生成别名为tomcat的私钥(条目类型PrivateKeyEntry)

参数说明:

-genkeypair:生成一对非对称密钥;
-alias:指定密钥对的别名,该别名是公开的;
-keyalg:指定加密算法,本例中的采用通用的RAS加密算法;
-keystore:密钥库的路径及名称,不指定的话,默认在操作系统的用户目录下生成一个".keystore"的文件

中间根据提示设置密码,生成文件.keystore。生成的这个

注意:

  1.密钥库的密码至少必须6个字符,可以是纯数字或者字母或者数字和字母的组合等等

  2."名字与姓氏(CN)"应该是输入域名,而不是我们的个人姓名,本机可用localhost,其他的可以不填

将文件.keystore放到Tomcat服务器的conf目录下(不移动也可以,在xml中配置时写指定路径即可)
cp tomcat.keystore /usr/local/tomcat/server/conf/

生成客户端证书

生成PKCS12格式的客户端证书

为客户端生成证书,为了让证书顺利导入IE和Firefox,证书格式应该是PKCS12。

keytool -genkey -v -alias tomcat -keyalg RSA -storetype PKCS12 -keystore tomcat-client.p12

让服务器信任户端证书

由于是双向SSL认证,服务器必须要信任客户端证书.由于不能直接将PKCS12直接将PKCS12的格式的证书导入证书库,必须先把客户端证书导出为一个单独的cer文件

keytool -export -alias tomcat -keystore mykey.p12 -storetype PKCS12 -storepass P12证书秘钥 -rfc -file tomcat-client-p12.cer 

keytool -import -v -file tomcat-client-p12.cer -keystore tomcat.keystore    //将文件导入到服务器的秘钥库

客户端信任服务器证书

让客户端信任服务器证书,由于是双向ssl认证,因此,必须把服务器证书添加到浏览的"受信任的根证书颁发机构"。由于不能直接将keystore格式的证书库导入,必须先把服务器证书导入为一个单独的cer文件

keytool -keystore tomcat.keystore -export -alias tomcat -file  tomcat.cer

双击tomcat.cer文件按照提示安装到受信任的根证书颁发机构

根据秘钥库生成客户端证书

keytool -export -alias tomcat -keystore tomcat.keystore -rfc -file tomcatclient.cer   //根据keystore秘钥库中别名为tomcat的条目(私钥),生成cer证书(公钥)

参数说明:

-alias tomcat    //要处理的条目的别名(秘钥库中的条目)
-keystore tomcat.keystore   //密钥库名称,为刚才导出的秘钥库
-rfc    //以 RFC 样式输出
-file tomcatclient.cer    //输出文件名

导入其他的证书到密钥库

导入后条目类型为trustedCertEntry,据说只是导入了cer证书的私钥,不含有公钥,所以不会起作用。

keytool -import -file tomcatclient.cer -storepass  -keystore tomcat.keystore -alias aeolian

参数说明:

-file tomcat-client2.cer    //必须,证书文件名称
-keystore tomcat.keystore    //必须,密钥库名称,创建服务端秘钥库的文件
-alias tomcat-client2   //推荐写,要导入的证书别名(决定此证书导入到秘钥库中的别名),不写默认为mykey,再次导入会提示别名mykey已存在
-storepass    //不推荐写,密钥库密码。回车后会提示你输入秘钥库密码

在密钥库中删除条目

keytool -delete -keystore tomcat.keystore -alias mykey    //删除秘钥库中别名为mykey的条目

修改秘钥库中证书条目的口令

keytool -keypasswd -keystore tomcat.keystore -alias mykey  //更改别名为mykey条目的密码,需要输入秘钥库密码

查看秘钥库内容

keytool -list -v -keystore tomcat.keystore    //要输入秘钥库密码

查看证书内容

keytool -printcert -file tomcatclient.cer

修改配置文件

修改conf/server.xml文件,修改加密连接器,添加keystoreFile与keystorePass,吧protocol换为HTTP/1.1,8443端口也可以修改为https默认的443端口

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" 
secure="true"  clientAuth="true" sslProtocol="TLS" 
keystoreFile="conf/tomcat.keystore" keystorePass="秘钥库密码" 
truststoreFile
="conf/tomcat.keystore" truststorePass="密码"/>

浏览器安装证书

双击证书安装

浏览器输入https://localhost:8443访问localhost为上面的cn

证书起作用会提示根证书不在360根证书计划内(浏览器只信任大厂颁发的证书)。

猜你喜欢

转载自www.cnblogs.com/aeolian/p/11906695.html