给tomcat7配置SSL证书

今天工作中需要给tomcat7配置SSL证书,以使用https访问tomcat服务。以前都是自签名,照着网上的文档完成的,这回有一点不同的是https证书已经从GoDaddy买回来了,配置过程中遇到了一点坑,这里记录一下。

tomcat7配置SSL证书

从GoDaddy买来的证书包括3个文件,test.com.key, test.com.crt, godaddy_intermediate.crt。这里稍微解释一下,这3个文件。

test.com.key是私钥文件,文件内容如下:

-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----

test.com.crt是私钥对应的证书,文件内容如下:

-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----

godaddy_intermediate.crt是GoDaddy的一些中级证书,内容如下:

123456

-----BEGIN CERTIFICATE-----...-----END CERTIFICATE----------BEGIN CERTIFICATE-----...-----END CERTIFICATE-----

在网上查了下,需要先根据这3个文件生成p12文件,命令如下:

1

openssl pkcs12 -export -inkey test.com.key -in test.com.crt -chain -CAfile godaddy_intermediate.crt -out tomcatserver.p12 -name tomcatserver -passout pass:123456

不过我执行这行命令时,报错了:

1

Error unable to get issuer certificate getting chain.

又到处查阅文档,发现需要将Go_Daddy_Class_2_CA.pemgodaddy_intermediate.crt合并,得到ca_bundle.crt,以保证CA链可以到达根证书颁发节点,到处都是坑啊。

1

cat /etc/ssl/certs/Go_Daddy_Class_2_CA.pem godaddy_intermediate.crt > ca_bundle.crt

然后再执行上面的命令,p12文件就生成好了。

1

openssl pkcs12 -export -inkey test.com.key -in test.com.crt -chain -CAfile ca_bundle.crt -out tomcatserver.p12 -name tomcatserver -passout pass:123456

用portecle打开看一下,这个KeyPair的证书详情表明CA链上确实有4个证书。

p12_portecle_open.png

再将p12的keystore转化为jks的keystore。

1

keytool -importkeystore -v -srckeystore tomcatserver.p12 -srcstoretype pkcs12 -srcstorepass 123456 -destkeystore tomcatserver.jks -deststoretype jks -deststorepass 123456

这样就得到了jks格式的keystore文件tomcatserver.jks。

最后在tomcat7的server.xml修改配置。

<Connector
           protocol="org.apache.coyote.http11.Http11NioProtocol"
           port="8443" maxThreads="200"
           scheme="https" secure="true" SSLEnabled="true"
           keystoreFile="/somewhere/tomcatserver.jks" keystorePass="123456"
           clientAuth="false" sslProtocol="TLS"/>

Over!

申请SSL证书的通用步骤

上一节的步骤有些曲折,仔细研究了下,发现如果按一定步骤从头来申请SSL证书,还是比较简单的。

  • 生成私钥文件www.test.com.key 1openssl genrsa -out www.test.com.key 2048
  • 生成证书请求文件www.test.com.csr,下次证书过期了,还是同样方法生成一个新的证书请求文件

1

openssl req -new -sha256 -subj "/C=CN/ST=ProvinceName/L=CityName/O=OrgName/OU=OrgUnitName/CN=www.test.com" -key www.test.com.key -out www.test.com.csr

  • 到SSL证书提供商那里填写在线申请表,并提交www.test.com.csr文件,提交申请
  • SSL证书提供商证书审核通过后,将得到ca_bundle.crtwww.test.com.crt,于是就有这三个文件:www.test.com.keywww.test.com.crtca_bundle.crt
  • 用上述3个文件生成p12文件

1

openssl pkcs12 -export -inkey www.test.com.key -in www.test.com.crt -chain -CAfile ca_bundle.crt -out tomcatserver.p12 -name tomcatserver -passout pass:123456

  • 将p12文件转换为jks文件

1

keytool -importkeystore -v -srckeystore tomcatserver.p12 -srcstoretype pkcs12 -srcstorepass 123456 -destkeystore tomcatserver.jks -deststoretype jks -deststorepass 123456

参考

http://www.oschina.net/question/2266279_221175 http://www.fourproc.com/2010/06/23/create-a-ssl-keystore-for-a-tomcat-server-using-openssl-.html https://sg.godaddy.com/zh/help/tomcat-4x5x6x-renew-a-certificate-5355 https://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏落影的专栏

iOS如何保证下载资源的可靠性

前言 有时需要在本地存储资源,并且从服务器下载资源,因为涉及到运行期间的安全性,有必要添加校验的逻辑,因此有了本文的一些思考。 ipa包被篡改的情况 首先思考的...

46960
来自专栏FreeBuf

一封伪造邮件引发的“探索”(涉及钓鱼邮件、SPF和DKIM等)

0x00. 引言 我用swaks 发送一封以我们公司CTO为显示发件人(腾讯企业邮箱)的伪造邮件给我的一个同事,邮件的内容就是让这位同事去CTO的办公司一趟,没...

1.3K60
来自专栏逸鹏说道

小侃 SQL加密和性能

细说SQL Server中的加密 简介 加密是指通过使用密钥或密码对数据进行模糊处理的过程。在SQL Server中,加密并不能替代其他的安全设置,比如...

32860
来自专栏狂码一生

QT新建文件、打开文件、保存文件

18830
来自专栏刺客博客

免费泛解析证书获取及后续安装方法

65150
来自专栏程序员叨叨叨

Android Keystore漫谈

今天使用高德地图为应用添加Key的时候,发现有一项需要用到安全码SHA1,而SHA1存在于Keystore中,遂简单地了解了一下Keystore。虽然之前实习开...

16510
来自专栏mantou大数据

深入浅出JWT(JSON Web Token )

JSON Web Token(JWT)是一个开放式标准(RFC 7519),它定义了一种紧凑(Compact)且自包含(Self-contained)的方式,用...

685110
来自专栏Web行业观察

关于搭建HTTPS服务...

关于 HTTPS 的基本原理大家都已经不再陌生,今天和大家说说如何搭建一个支持 HTTPS 的服务端。

45540
来自专栏张绍文的专栏

基于 TLS 1.3的微信安全通信协议 mmtls 介绍(下)

随着近些年网络安全事情的频繁发生,使得用户对网络通信安全的意识越来越强。国内外的网络服务提供商都逐渐提供全站的安全通信服务,如国内的淘宝、百度先后宣布已经完成了...

2.3K10
来自专栏FreeBuf

什么是SSL预证书?

预验证是用作证书透明度(CT)一部分的特殊类型的SSL证书。 预先证书与常规SSL证书不同,因为它们不是(也不可以)用于验证服务器或形成经过身份验证的连接(例如...

35040

扫码关注云+社区

领取腾讯云代金券