Nginx + Tomcat 应用证书启用 SSL
第一部分 简述
…
附:相关概念
1 Nginx 是什么?
…
2 Tomcat 是什么?
…
3 SSL 是什么?
Secure Sockets Layer,现在应该叫“TLS",但由于习惯问题,还是称呼“SSL”较多。
HTTP 协议默认情况下是不加密内容的,这样就很可能在内容传播的时候被别人监听到,如果安全性要求较高的场合,
必须要加密,https 就是带加密的http协议,而https的加密是基于SSL的,它执行的是一个比较下层的加密,也就是说,在加密前,你的服务器程序在干吗,加密后也一样在干嘛,不用动,这个加密对用户和开发者来说都是透明的。
OpenSSL, 简单的说OpenSSL 是 SSL的一个实现, SSL只是一种规范,理论上来说 SSL这种规范是安全的,目前的技术水平很难破解,但SSL的实现就可能有些漏洞。如著名的“心脏出血”。OpenSSL还提供了一大堆强大的工具软件,强大到90%我们都用不到。
注:心脏出血漏洞: https://jingyan.baidu.com/article/fb48e8be5919136e632e1476.html
4 证书是什么?
(1)证书标准
X.509- 这是一种证书标准,主要定义了证书中应该包含哪些内容,其详情可以参考RFC5280,SSL使用的就是这种证书标准。
(2)编码格式
同样的X.509 证书,可能有不同的编码格式,目前有以下两种编码格式。
PEM - Privacy Enhanced Mail ,打开看文本格式以“-----BEGIN..."开头,“-----END..."结尾,内容是BASE64编码。
查看PEM格式证书的信息:openssl x509 -in certificate.pem -text -noout
Apache 和 *NIX 服务器偏向于使用这种编码格式。
DER - Distinguished Encoding Rules,打开看是二进制格式,不可读
查看DER格式证书的信息:openssl x509 -in certificate.der -inform der -text -noout
Java和Windows服务器偏向于使用这种编码格式
(3)相关的文件扩展名
这是比较误导人的地方,虽然我们已经知道有PEM和DER这两种编码格式,但文件扩展名并不一定叫”PEM"或者 “DER"
常见的扩展名除了PEM 和 DER还有以下这些,他们除了编码格式可能不同外,内容也有差别,但大多数都能相互转换编码格式。
CRT/CER/KEY/CSR/PFX/P12
4 Keytool 是什么?
…
5 openSSL 是什么?
…
第二部分 操作过程
1 创建证书
keytool -genkeypair -alias spads -keyalg RSA -keystore d:/keys/spadskey
-genkey 生成密钥对
-alias 要处理的条目的别名
-keyalg 密钥算法名称
-keystore 密钥库名称
其中密钥库口令与密钥口令均为 spads2017
其中 d:/keys/spadskey 中 spadskey 为 keystore名称,也可以这样命名 d:/keys/spads.keystore
注:需确保生成路径(此处d:/keys)存在,否则在最后一步抛异常

2 导出证书(将密钥库导出 crt格式证书文件)
keytool -export -file d:keys/spads.crt -alias spads -keystore d:/kyes/spadskey
-export 导出证书
-file 输出文件名
-alias 要处理的条目的别名
-keystore 密钥库名称
3 为 客户端的JVM导入证书
keytool -import -keystore D:\DevelopTools\Java\jdk1.8.0_31\jre\lib\security\cacerts -file spads.crt -alias spads

注: 执行命令时,输入密钥库口令spads2017,抛出异常java.io.IOException: Keystore was tampered with, or password was incorrect。
解决办法:输入保护密码,默认为 changeit.
4 导出私钥
(1)首先将keystore 转换为pkcs12 格式
keytool -importkeystore -srckeystore D:/keys/spadskey -destkeystore D:/keys/intermediate.p12 -deststoretype PKCS12

其中 输入的目标密钥库口令和源密钥库口令均为 spads2017
(2)之后使用 OpenSSL 导出pem 文件
openssl pkcs12 -in D:/keys/intermediate.p12 -out D:/keys/extracted.pem –nodes

其中输入的 import Password 为 spads2017
5 应用证书到Tomcat8
(1) 将生成的密钥库文件、证书文件、key文件 拷贝到 ${catalina.base}/conf/ 目录下
(2) ${catalina.base}/conf/server.xml 开启 SSL connector
注释默认的connector
<!--
<Connector port="8280" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
-->
开启SSL的connector
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="${catalina.base}/conf/spadskey"
keystorePass="spads2017"
SSLCertificateFile="${catalina.base}/conf/spads.crt"
SSLCertificateKeyFile="${catalina.base}/conf/extracted.pem"/>
6 应用证书到Nginx
(1)使用pem 转key 命令得到spads.key
openssl rsa –in d:/keys/extracted.pem –out d:/keys/spads.key
(2)配置nginx.conf

(3) 查看效果


Nginx + Tomcat 应用证书启用 SSL的更多相关文章
- Nginx启用ssl以及免费证书申请
主要是这个东西,折腾了我两天,所以记录下来. 最开始是在meteor下面调用一个webservice,但是发现meteor项目的发布环境时https,所以请求的webservice也必须时webser ...
- Nginx+tomcat+ssl免费证书配置
0.说明 本文说描写叙述的方式是用nginx的443重定向到tomcat的8443,nginx的80port重定到tomcat的8080: 乱入:个人标记:caicongyang 1.nginx安装 ...
- nginx+腾讯云免费ssl证书+阿里云ECS实现Https配置
1. 申请SSL证书: 首先我们需要到腾讯云那边申请一个ssl证书,对于个人博客类型的,建议采用免费版本,土豪除外 申请地址:https://console.cloud.tencent.com/ssl ...
- Nginx+Tomcat Https SSL部署方案
1.软件版本: nginx-1.15+ tomcat-8.0+ 2.先解决一个疑问:Tomcat到底需不需要配置SSL? 答案:不需要 3.SSL申请 使用腾讯云.阿里云的服务器,会更加方便申请.(申 ...
- 网站如何启用SSL安全证书?IIS7启用新建Https:/
网站使用SSL,通过SSL证书申请,然后导入之后.我们需要对网站进行设置才能正常使用SSL证书,具体如何操作让网站启用SSL呢,本经验以一个网站添加SSL主机头的方式为例来,网站启用SSL服务器安全证 ...
- spring-boot+nginx+tomcat+ssl配置笔记
如果你的tomcat应用需要采用ssl来加强安全性,一种做法是把tomcat配置为支持ssl,另一种做法是用nginx反向代理tomcat,然后把nginx配置为https访问,并且nginx与tom ...
- Tomcat SSL配置及Tomcat CA证书安装
Tomcat既可以作为独立的Servlet容器,也可以作为其他HTTP服务器附加的Servlet容器.如果Tomcat在非独立模式下工作, 通常不必配置SSL,由它从属的HTTP服务器来实现和客户的S ...
- 如何在Nginx不绑定域名下使用SSL/TLS证书?
前提 该文主要记录如何在没有购买域名的情况下使用SSL/TLS协议,即地址前面的http变成了https.但是这样的SSL协议是会被浏览器认为是不安全的.在开发或者测试环境可以这样搞,生产环境下还是乖 ...
- tomcat 安装配置部署到nginx+tomcat+https
目录 1 Tomcat简介 2.下载并安装Tomcat服务 2.2 部署java环境 2.3 安装Tomcat 2.4 Tomcat目录介绍 (关注点 bin conf logs webapps) 2 ...
随机推荐
- rapidxml读取包含中文路径的xml解析错误的解决方法
from http://blog.csdn.net/qinwei4072880/article/details/38865179 1.rapidxml不支持中文路径. 2.rapidxml不支持Uni ...
- Linux学习之十五-Linux文件特殊权限和附加权限
Linux文件特殊权限和附加权限 1.特殊权限suid 范围:只能针对二进制命令文件 作用:让普通用户拥有二进制命令文件所有者的权限 举例1:普通用户使用passwd命令修改密码 cat /etc/s ...
- 将App发布到WasLiberty的较稳妥方法
1.将应用解压放到一个目录 具体步骤: 1.1 建立目录,假设应用包为app.war且和新建目录sp在同一目录下 #mkdir sp 1.2 将app.war 改名为app.zip,这是为了解压#mv ...
- Spring 小记
本作品由Man_华创作,采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可.基于http://www.cnblogs.com/manhua/上的作品创作. 使用STS新建spr ...
- ASP.NET MVC深入浅出系列(持续更新) ORM系列之Entity FrameWork详解(持续更新) 第十六节:语法总结(3)(C#6.0和C#7.0新语法) 第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字 各种通讯连接方式 设计模式篇 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借
ASP.NET MVC深入浅出系列(持续更新) 一. ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态模 ...
- OpenGL研究3.0 多边形区域填充
OpenGL研究3.0 多边形区域填充 DionysosLai(906391500@qq.com)2014-06-22 所谓多边形区域填充.就是将多边形内部区域,所有已相同色块填充.注意:这里讨论的多 ...
- python thrift hbase安装连接
默认已装好 hbase,我的版本是hbase-0.98.24,并运行 python 2.7.x 步骤: sudo apt-get install automake bison flex g++ git ...
- 强大易用的日期和时间库 Joda Time
Joda-Time提供了一组Java类包用于处理包括ISO8601标准在内的date和time.可以利用它把JDK Date和Calendar类完全替换掉,而且仍然能够提供很好的集成,并且它是线程安全 ...
- php程序的三大流程控制
php程序的三大流程控制 ① 顺序控制(从上到下.从左到右) ②分支控制 if(条件表达式){ //n多语句 }else if (条件表达式){ //n 多语句 }else if(条件表示式){ / ...
- java 方法重写原则
方法重写应遵循“三同一小一大”原则: “三同”:即方法名相同,形参列表相同,返回值类型相同: “一小”:子类方法声明抛出的异常比父类方法声明抛出的异常更小或者相等: “一大”:子类方法的访问修饰符应比 ...