Tomcat 配置 https

HTTPS1

Hypertext Transfer Protocol Secure (HTTPS) is an extension of the Hypertext Transfer Protocol (HTTP). It is used for secure communication over a computer network, and is widely used on the Internet. In HTTPS, the communication protocol is encrypted using Transport Layer Security (TLS), or, formerly, its predecessor, Secure Sockets Layer (SSL). The protocol is therefore also often referred to as HTTP over TLS, or HTTP over SSL.

要想学习 HTTPS,首先应该学习基本的密码学知识,要理解对称加密和非对称加密的数学原理和特性,否则当看到密钥、私钥、公钥等等概念的时候很容易混乱。“公钥加密,私钥解密”,这句话是没错,但只说对了一半。公钥和私钥的区分不是以谁加密、谁解密来区分的,是以谁公开、谁不公开为区分的。

实际上公钥和私钥都可以用来加密和解密,同一对钥匙,公钥加密只能私钥解密,私钥加密只能公钥解密。那为什么我们平常不说“私钥加密”呢?因为公钥是公开的,人手一份公钥,私钥加密的话和没加密是一个样的。因此在实践中,基本不用私钥进行加密,私钥的用途一般是 数字签名,用以验证签名方的身份。

单向认证只需站点部署了SSL证书就行,任何用户都可以去访问(IP被限制除外等),只是服务端提供了身份认证。双向认证是服务端也需要客户端提供身份认证,也就是只能是服务端允许的客户才能访问,安全性相对于要高一些。一般 web 应用都是采用单向认证的,原因很简单,用户数目广泛,且无需在通讯层做用户身份验证,一般都在应用逻辑层来保证用户的合法登入,比如需要用户输入账号密码进行登录验证。但如果是企业应用对接,可能会要求对客户端做身份验证,此时需要做双向认证。
在这里插入图片描述

HTTPS握手过程2

在这里插入图片描述

使用 keytool 生成证书

准备工作: 服务器安装 tomcat, jdk
配置好jdk的环境变量

生成服务器证书

read -p "Enter your domain [www.example.com]: " DOMAIN

keytool -genkey -v \
	-alias $DOMAIN \
	-keyalg RSA \
	-storetype PKCS12 \
	-ext SAN=dns:$DOMAIN \
	-keysize 2048 \
	-keystore /mnt2/JenkinsServer/apache-tomcat-7.0.55/ssl/jenkins.jks \
	-validity 3650

-alias 别名
-keyalg 密钥算法
-storetype 储存格式
-ext 其中一个选项是 主题备用名称 SAN,这个高版本的浏览器会有要求。
-keysize 密钥长度
-keystore 密钥储存路径及名称
-validity 密钥有效期

之后会提示输入用户名、国家、地区、公司等。注意第一个是输入目标域名,也就是将来要访问的域名,而不是你自己的名字,这个容易令人误解。

单向验证到这一步就可以了,然后修改 tomcat目录下的 /conf/server.xml,把这个打开,如果不想IP:PORT的方式,可以把port 8443 改成 443,其他 redirect 8443 的地方也要改成 443。
这里clientAuth="false",服务端没有对客户端进行校验,keystoreFile指明密钥的位置,keystorePass指明密钥的解锁密码,这个密码在上面生成密钥的时候会指定。
在这里插入图片描述

keytool的一些命令

// 密钥可以通过 alias 来引用到

// 密钥库格式转换
keytool -importkeystore -srckeystore jenkins.jks -destkeystore jenkins.jks -deststoretype pkcs12

// PKCS12的证书导出为 cer 证书
keytool -export -alias mykey -keystore D:\home\mykey.p12 -storetype PKCS12 -storepass qjbbc123 -rfc -file D:\home\mykey.cer

// cer 格式证书导入到证书库
keytool -import -v -file D:\home\mykey.cer -keystore D:\home\tomcat.keystore

// 显示证书库里的 key
keytool -list -keystore D:\home\tomcat.keystore

//证书导出为 cer 格式
keytool -keystore D:\home\tomcat.keystore -export -alias tomcat -file D:\home\tomcat.cer

更新Ubuntu上的CA证书

只要将证书(扩展名为crt)复制到 /usr/local/share/ca-certificates 文件夹然后运行 update-ca-certificates 即可。

删除的话直接将 /usr/local/share/ca-certificates 对应的证书删除,然后执行 update-ca-certificates


  1. https://en.wikipedia.org/wiki/HTTPS ↩︎

  2. http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html ↩︎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值