文档章节

https环境搭建配置(基于Tomcat和Nginx)

谭又中
 谭又中
发布于 2014/10/23 13:32
字数 886
阅读 6635
收藏 205

一、基于Tomcat、JDK内置密钥工具:


1、生成服务端证书库(keystore证书库文件),用于客户端验证服务端的真实性

keytool -genkey -v -alias key_server -keyalg RSA -keystore e:\server.keystore -dname "CN=D-F005227,OU=youku,O=zhibohudong,L=beijing,ST=beijing,C=cn" -storepass Aa123 -keypass Aa123 -validity 36000


颁发者信息:

CN : 一般指本站点域名或站长姓名(common name)

OU : 组织单位名称(organization unit)

O : 组织名称(organization)

L : 城市或区域(location)

ST : 州或省份(state)

C : 两字母国家代码(country)


2、生成客户端证书(PKCS12文件),用于双向认证中服务端验证客户端请求来源是否合法用户

keytool -genkey -v -alias key_client -keyalg RSA -storetype PKCS12 -keystore e:\client.p12 -dname "CN=D-F005227,OU=youku,O=zhibohudong,L=beijing,ST=beijing,C=cn" -storepass Bb123 -keypass Bb123 -validity 36000


3、让服务端信任客户端证书,将客户端证书导出为CER文件

keytool -export -alias key_client -keystore e:\client.p12 -storetype PKCS12 -storepass Bb123 -rfc -file e:\client.cer


4、将step 3中导出的客户端证书(CER文件)导入到step 1中的服务端证书库中,以完成信任绑定

keytool -import -v -file e:\client.cer -keystore e:\server.keystore -storepass Aa123


5、Tomcat服务器配置,支持https安全连接(SSL双向验证,clientAuth=true|false|want)

打开TOMCAT_HOME\conf\server.xml,在<Service name="Catalina">下新增:

  <Connector port="4433" protocol="HTTP/1.1" SSLEnabled="true" 
    maxThreads="150" scheme="https" secure="true" clientAuth="true" 
    sslProtocol="TLS" keystoreFile="e:/server.keystore" keystorePass="Aa123" 
    truststoreFile="e:/server.keystore" truststorePass="Aa123"/>

6、让客户端导入证书,以便完成双向认证,正常访问

call e:/client.p12


7、导出服务端证书,安装在客户端(证书存储位置:授信任的根证书颁发机构),以便建立信任连接,保证客户端不会提示不信任的站点(如果服务端证书是经权威证书机构颁发,则无须执行该步骤)

keytool -export -alias key_server -keystore e:\server.keystore -storepass Aa123 -rfc -file e:\server.cer

call e:/server.cer


8、启动服务器,访问验证

输入地址:https://d-f005227:4433,可爱的汤姆小猫出现了,且地址栏前面出现一把绿色的锁,OK,打完收工!



附:在开启双向SSL认证(clientAuth=true)时,使用Firefox浏览器访问会提示

这时需要手动按以下步骤导入客户端证书:

菜单 --> 工具 --> 选项 --> 高级 --> 证书 --> 查看证书 --> 您的证书 --> 导入 --> 选择client.p12 --> 输入客户端证书密钥 --> 提示导入成功 --> 确定 --> 刷新页面 --> over



二、基于Nginx、Linux下OpenSSL密钥工具


1、进入密钥、证书文件存放路径(自定义)

cd /etc/nginx/conf


2、生成2048位长的密钥,并用des3加密

openssl genrsa -des3 -out server.key 2048


3、用step 2中生成的密钥来生成服务端证书请求文件

openssl req -new -key server.key -out server.csr

  如果step 2中采用des3加密了,需要输入step 2设置的密码


颁发者信息:

  Country Name:两字母国家代码

  State or Province Name:州或省份

  Locality Name:城市或区域

  Organization Name:组织名称

  Organizational Unit Name:组织单位名称

  Email Address:邮件地址

  A challenge password:为证书设置密码

  An optional company name:公司名称(可不填写)


4、使用step 2中生成的密钥和step 3中生成的证书请求文件来生成服务端数字证书文件

openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt


5、Nginx配置

  在http范围内增加如下配置

server {
    listen       80;
    server_name  localhost d-f005227;
    ssl on;
    ssl_certificate server.crt;
    ssl_certificate_key server.key;
    ssl_verify_client on;    # 开启客户端认证
    ssl_client_certificate client.crt;    # 客户端认证数字证书(生成方式省略)
    location / {
        proxy_pass http://localhost:8080 ;
    }
}




© 著作权归作者所有

谭又中

谭又中

粉丝 10
博文 7
码字总数 2184
作品 0
渝北
程序员
私信 提问
加载中

评论(6)

沈浩z

引用来自“WAN口未连接”的评论

nginx最关键的一步竟然略过。。???
哪一步没有了? 我也没有成功
沈浩z
没有成功啊
WAN口未连接
WAN口未连接
nginx最关键的一步竟然略过。。???
郑臣
按照以上详细步骤生产证书,以及配置tomcat,访问https不成功
谭又中
谭又中

引用来自“阿坤1”的评论

问一下,
如果分发用nginx,应用采用tomcat的话,两者都要配置证书,还是只需要nginx配置?
只需nginx就行了
阿坤1
阿坤1
问一下,
如果分发用nginx,应用采用tomcat的话,两者都要配置证书,还是只需要nginx配置?
【纯干货】CentOS7上基于nginx搭建tomcat9.0版本的负载均衡群集管理

【纯干货】CentOS7上基于nginx搭建tomcat9.0版本的负载均衡群集管理 前言 前面咱们介绍了CentOS7上的LVS负载均衡群集管理之LVS-NAT,下面就在给大家介绍一种负载均衡群集:基于nginx搭建tom...

漂移的兔子
2018/07/05
0
0
Nginx+Tomcat负载均衡集群,Nginx反向代理(内附源码包)

案例分析;通常情况下,一个Tomcat站点由于可能出现单点故障及无法应付过多客户复杂多样的请求等问题,不能单独应用于生产环境中,所以我们需要一套更可靠的解决方案来完善web站点的架构。 ...

明月幽谷
2018/08/12
0
0
109.window 下实现nginx 反向代理

1.搭建nginx环境 1.1 下载window版本nginx软件 http://nginx.org/en/download.html 1.2. 解压运行 1.3 访问 niginx 2. 负载均衡 2.1 配置文件修改 # 配置我们的服务 --开始 upstream a.com {...

Lucky_Me
2018/05/13
0
0
搭建Nginx+Tomcat 负载均衡集群

实验拓扑: 实验要求: 客户访问192.168.10.10,第一次或者第一个请求将请求交给10.101,第二次或者第二个请求交给10.102。实现两台服务器负载,多台的搭建方法相同。 试验环境: 2. 此处为了...

Y.weisheng
2015/07/04
0
0
Nginx + Tomcat 负载均衡集群

Nginx + Tomcat 负载均衡集群 -- 实验环境: -- 部署Tomcat -- 安装 JDK 配置 java 环境,解压 jdk 移动到 /usr/local 下命名为java: 在 /etc/profile.d/ 下面建立java.sh 脚本,内容如下:...

HHHNDYD
2018/06/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

数据库

数据库架构 数据库架构可以分为存储文件系统和程序实例两大块,而程序实例根据不同的功能又可以分为如下小模块。 1550644570798 索引模块 常见的问题有: 为什么要使用索引 什么样的信息能成...

一只小青蛙
今天
5
0
PHP常用经典算法实现

<? //-------------------- // 基本数据结构算法 //-------------------- //二分查找(数组里查找某个元素) function bin_sch($array, $low, $high, $k){ if ( $low <= $high){ $mid = int......

半缘修道半缘君丶
昨天
5
0
GIL 已经被杀死了么?

本文原创并首发于公众号【Python猫】,未经授权,请勿转载。 原文地址:https://mp.weixin.qq.com/s/8KvQemz0SWq2hw-2aBPv2Q 花下猫语: Python 中最广为人诟病的一点,大概就是它的 GIL 了。...

豌豆花下猫
昨天
6
0
git commit message form

commit message一般包括3部分:Header、Body、Footer。 <type>(<scope>):<subject>blank line<body>blank line<footer> header是必需的,body、footer可以省略。 header中type、subject......

ninjaFrog
昨天
5
0
聊聊Elasticsearch的CircuitBreakerService

序 本文主要研究一下Elasticsearch的CircuitBreakerService CircuitBreakerService elasticsearch-7.0.1/server/src/main/java/org/elasticsearch/indices/breaker/CircuitBreakerService.ja......

go4it
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部