Tomcat配置https加密连接

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

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

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

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

单向认证

生成服务端秘钥库

使用java的工具keytool产生数字证书,tomcat.keystore可以写在需要生成的路径。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/

根据秘钥库生成证书

这里根据keystore中服务端证书的私钥生成cer的服务端公钥cer证书。

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

参数说明:

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

在客户端安装tomcatserver.cer即可实现单向认证,server.xml配置如下

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

其他常用命令

导入其他的证书到密钥库

导入后条目类型为trustedCertEntry,配置文件要配置truststoreFile。这个一般用于客户端证书(公钥)的导入。

只是导入了cer证书的私钥,不含有公钥,要再根据秘钥库中导入的证书alias执行export操作。

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

双向认证

上面的为服务端证书,在此基础上,双向认证还需要客户端证书。客户端证书是先生成p12的客户端私钥,再根据p12转成cer,把cer(公钥)导入keystore并命名alias。

生成PKCS12格式的客户端证书

为客户端生成证书,为了让证书顺利导入IE和Firefox,证书格式应该是PKCS12。要输入客户端证书密码。tomcat-client.p12为客户端私钥。

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

让服务器信任户端证书

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

keytool -export -alias tomcatclientp12 -keystore tomcat-client.p12 -storetype PKCS12 -storepass P12证书秘钥 -rfc -file tomcat-client-p12.cer  //导出客户端公钥
keytool -import -v -file tomcat-client-p12.cer -keystore tomcat.keystore -alias tomcatclientpub    //将客户端证书公钥导入到服务器的秘钥库,并为客户端公钥起一个别名

双击tomcat-client.p12文件按照提示输入客户端证书密码,安装到受信任的根证书颁发机构

所有证书

tomcat-client-p12.cer:客户端证书的公钥(双向认证特有,最终导入到keystore里面)

tomcat-client.p12:客户端证书的私钥(双向认证特有,客户端安装,个人证书下面,否则不起作用)

tomcatserver.cer :服务端证书的公钥(客户端安装,受信任的根证书颁发机构下面)

tomcat.keystore:服务端证书库,既包含服务端私钥,又包含客户端公钥(服务器conf下面)

修改配置文件

修改conf/server.xml文件,修改加密连接器,添加keystoreFile(服务端证书私钥)与keystorePass(客户端证书公钥),把protocol换为HTTP/1.1,8443端口也可以修改为https默认的443端口。clientAuth表示客户端是否认证,只有在双向认证时才设为true。

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

浏览器安装证书

双击证书安装

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

最好用IE浏览器测试(一般浏览器只信任大厂颁发的证书,所以看起来不明显)。

点击浏览器url栏右侧的锁,即可查看证书(服务端证书)状态。

若服务端公钥不在受信任的根证书颁发机构下面,浏览器(IE)访问时会提示不安全。

若客户端私钥证书安装不在个人下面,可能会出现下面的情况。

Chrome出现:ERR_BAD_SSL_CLIENT_AUTH_CERT

IE出现:无法安全地连接到此页面 这可能是因为该站点使用过期的或不安全的 TLS 安全设置。如果这种情况持续发生,请与网站的所有者联系。 TLS 安全设置未设置为默认设置,这也可能导致此错误。

双向认证最终效果图:

原文地址:https://www.cnblogs.com/aeolian/p/11906695.html

时间: 2024-11-03 20:57:14

Tomcat配置https加密连接的相关文章

Nginx+Tomcat配置https

Nginx + Tomcat 配置 HTTPS 1.总述 浏览器和 Nginx 之间走的 HTTPS 通讯,而 Nginx 到 Tomcat 通过 proxy_pass 走的是普通 HTTP 连接. 2.Nginx配置(nginx.conf),部分 http { #HTTPS server server { listen 443 ssl; server_name goldlone.cn; #证书地址 ssl_certificate ./1_goldlone.cn_bundle.crt; ssl_

用tomcat配置https自签名证书,解决 ios7.1以上系统, 苹果inHouse发布

用tomcat配置https自签名证书,解决 ios7.1以上系统苹果inHouse发布不能下载安装的问题教程,话说,我其实最讨厌配置某某环境了,因为某一个小环节一旦出错,你的所有工作往往会功亏一篑,而且蛋疼到不行也不知道哪里出了错,我发布的的这个福利,虽然网上也有很多,但是都很零碎,有的资料还有错误,有的资料又不全,你说这样的情况,怎么不让我们搞的头疼,不过在此感谢哪些热心提供资料的人,现在既然我把它弄好了,就为大家做做贡献吧. 我目前给大家展示的是windowserver2003环境下搭建的

tomcat配置https协议

tomcat配置https协议 1.找到本地jdk底下的bin目录,bin目录底下存在文件keytool.exe(在bin目录下空白处,按住shift右击,打开命令窗口,如下图) 2.在cmd的命令窗口,输入命令(keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "D:\tomcat.keystore" ) 根据提示依次输入: 密钥库口令:123456(这个密码非常重要) 名字

tomcat配置https自签名证书(keytool生成)

tomcat配置https自签名证书(keytool生成) 生成keystore keytool -genkeypair -alias "server" -keyalg "RSA" -validity "365" -keystore "/app/webapp/tomcat/https/server.keystore" [[email protected] https]$ pwd /app/webapp/tomcat/https

用keytool制作证书并在tomcat配置https服务(四)

用keytool制作证书并在tomcat配置https服务(一) 用keytool制作证书并在tomcat配置https服务(二) 用keytool制作证书并在tomcat配置https服务(三) 上一篇我们实现了服务端自己模拟CA认证,那么有个问题. 一个客户端和服务端对接就需要把这个客户端的证书拿来导入到服务端的密钥库中.那么很多客户端要对接,就要多次导入. 可以这样,让客户端发送证书的csr文件给我们,我们用模拟的CA密钥库对客户端证书也进行签名颁发. 然后把签名后的证书发送给他,让他自己

我用阿里云的虚拟云主机,也能配置https加密吗?

我用阿里云的虚拟云主机,也能配置https加密吗?答案是YES. 整个过程比想象中还要简单,都是一些基本的配置,虚拟主机 Web托管都可以很容易的搞定https. 首先我们要了解一下,阿里云是怎么支持https的?看了文档才发现,原来阿里云的https被当做CDN里的一个加速配置,其实这也好理解,CDN本来就是在源地址之上加了一层缓存,如果加的缓存是https,不就可以把网站改造成https吗. 接下来的问题就是,ssl证书哪里来?https怎么配置? 从阿里云产品搜索发现,阿里云提供了一种免费

https原理及tomcat配置https方法

一. 什么是HTTPS 在说HTTPS之前先说说什么是HTTP,HTTP就是我们平时浏览网页时候使用的一种协议.HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全.为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS.SSL目前的版本是3.0,被IETF(Internet Engineering Task Force)定义在RFC 6101中,

(HTTPS)-https原理及tomcat配置https方法

一. 什么是HTTPS 在说HTTPS之前先说说什么是HTTP,HTTP就是我们平时浏览网页时候使用的一种协议.HTTP协议传 输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全.为了保证这些隐私数据能加密传输,于是网景公司设计了 SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS.SSL目前的版本是3.0,被IETF(Internet Engineering Task Force)定义在RFC 6101

[从零开始搭网站六]为域名申请免费SSL证书(https),并为Tomcat配置https域名所用的多SSL证书

点击下面连接查看从零开始搭网站全系列 从零开始搭网站 由于国内的网络环境比较恶劣,运营商流量劫持的情况比较严重,一般表现为别人打开你的网站的时候会弹一些莫名其妙的广告...更过分的会跳转至别的网站. 那么为了解决这种情况,那么我们就要申请SSL证书,并且配置服务器. 并且,我准备再学习并写一个微信小程序,而微信小程序所有接口都需要走https,那么全线https就势在必行. 目前免费https其实有很多家,我之前出过一个教程是 用Let's Encrypt实现Https(Windows环境+To