OpenSSL/Tomcat HTTPS 搭建

总结一下 OpenSSL和Tomcat  https的搭建

第一部分:首先是看看 OpenSSL的搞法:

创建证书的步骤:

(1)生成私钥

(2)生成待签名证书

(3)生成x509证书, 用CA私钥进行签名

(4)导成浏览器支持的p12格式证书

一:生成CA证书
CA
1. 创建私钥 :
openssl genrsa -out ca/ca-key.pem 1024 
2.创建证书请求 :
openssl req -new -out ca/ca-req.csr -key ca/ca-key.pem

3.自签署证书 :
openssl x509 -req -in ca/ca-req.csr -out ca/ca-cert.pem -signkey ca/ca-key.pem -days 1000
4.将证书导出成浏览器支持的.p12格式 :

openssl pkcs12 -export -clcerts -in ca/ca-cert.pem -inkey ca/ca-key.pem -out ca/ca.p12 
密码:xxxxxxx

三.生成server证书
1.创建私钥 :
openssl genrsa -out server/server-key.pem 1024 
2.创建证书请求 :
openssl req -new -out server/server-req.csr -key server/server-key.pem
3.自签署证书 :
openssl x509 -req -in server/server-req.csr -out server/server-cert.pem
-signkey server/server-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem
-CAcreateserial -days 3650 
4.将证书导出成浏览器支持的.p12格式 :
openssl pkcs12 -export -clcerts -in server/server-cert.pem -inkey server/server-key.pem -out server/server.p12 
密码:xxxxx

四.生成client证书 
1.创建私钥 :
openssl genrsa -out client/client-key.pem 1024 
2.创建证书请求 :
openssl req -new -out client/client-req.csr -key client/client-key.pem

3.自签署证书 :

openssl x509 -req -in client/client-req.csr -out client/client-cert.pem
-signkey client/client-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem
-CAcreateserial -days 3650 
4.将证书导出成浏览器支持的.p12格式 :
openssl pkcs12 -export -clcerts -in client/client-cert.pem -inkey client/client-key.pem -out client/client.p12

五.根据ca证书生成jks文件 (Javakeystore)
keytool -keystore truststore.jks -keypass 222222 -storepass 222222 -alias ca -import -trustcacerts -file ca/ca-cert.pem

第二部分 .配置tomcat ssl
1. conf/server.xml。

tomcat6中多了SSLEnabled="true"属性。keystorefile, truststorefile设置为你正确的相关路径 
xml 代码
 tomcat 5.5的配置:
<Connector port="8443" maxHttpHeaderSize="8192"
             maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
             enableLookups="false" disableUploadTimeout="true"
             acceptCount="100" scheme="https" secure="true"
             clientAuth="true" sslProtocol="TLS" 
             keystoreFile="server.p12" keystorePass="changeit" keystoreType="PKCS12" 
             truststoreFile="truststore.jks" truststorePass="222222" truststoreType="JKS" />  
tomcat6.0的配置:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="true" sslProtocol="TLS"
               keystoreFile="server.p12" keystorePass="changeit" keystoreType="PKCS12" 
               truststoreFile="truststore.jks" truststorePass="222222" truststoreType="JKS"/>

七、测试(linux下)
openssl s_client -connect localhost:8443 -cert
/home/ssl/client/client-cert.pem -key /home/ssl/client/client-key.pem
-tls1 -CAfile /home/ssl/ca/ca-cert.pem -state -showcerts

GET /index.jsp HTTP/1.0

八、导入证书
服务端导入server.P12 和ca.p12证书
客户端导入将ca.p12,client.p12证书
IE中(打开IE->;Internet选项->内容->证书)

ca.p12导入至受信任的根证书颁发机构,client.p12导入至个人

Firefox中(工具-选项-高级-加密-查看证书-您的证书)

将ca.p12和client.p12均导入这里

注意:ca,server,client的证书的common name(ca=ca,server=localhost,client=dong)一定不能重复,否则ssl不成功

九、tomcat应用程序使用浏览器证书认证

在server/webapps/manager/WEB-INF/web.xml中,将BASIC认证改为证书认证

<login-config>
    <auth-method>CLIENT-CERT</auth-method>
    <realm-name>Tomcat Manager Application</realm-name>
  </login-config>

在conf/tomcat-users.xml中填入下列内容
<?xml version=‘1.0‘ encoding=‘utf-8‘?>
<tomcat-users>
  <role rolename="manager"/>
  <role rolename="admin"/>
  <role rolename="user"/>
  <user username="[email protected], CN=dong, OU=tb, O=tb, L=bj, ST=bj, C=cn" password="null" roles="admin,user,manager"/>
</tomcat-users>

访问http://localhost:8443即可验证ssl是否成功

访问http://localhost:8443/manager/html可验证应用程序利用client证书验证是否成功

附件:

批量创建证书的格式:

#!/bin/bash
# using sample
# sh genClient.sh 20160728_Client001 "CHANGSHA SHINING POWER ELECTRONICS CO.,LTD" DS2015-F0105-00104 [email protected]
/usr/bin/expect <<EOF
set time 30
spawn openssl req -new -key shdcweb1client.pem -out client/$1.csr -sha256
expect {
"Country Name" {send "CN\r";exp_continue }
"State or Province Name" {send "ShangHai\r";exp_continue }
"Locality Name" {send "ShangHai\r";exp_continue }
"Organization Name" {send "Murata\r";exp_continue }
"Organizational Unit" {send "MCI\r";exp_continue }
"Common Name" {send "$2\r";exp_continue }
"Email Address" {send "$4\r";exp_continue }
"A challenge password" {send "murata\r";exp_continue }
"An optional company name" {send "MCI\r";exp_continue }

}

spawn openssl ca -policy policy_anything -days 365 -cert shdcweb1ca.crt -keyfile shdcweb1cakey.pem -in client/$1.csr -out client/$1.crt
expect {
"Enter pass phrase" {send "[email protected]\r";exp_continue }
"Sign the certificate" {send "y\r";exp_continue }
"1 out of 1 certificate requests certified" {send "y\r";exp_continue }

}

spawn openssl pkcs12 -export -clcerts -in client/$1.crt -inkey shdcweb1client.pem -out client/$1.p12
expect {
"Enter Export Password" {send "$3\r";exp_continue }
"Verifying - Enter Export Password" {send "$3\r" }

}

EOF
~

时间: 2024-10-09 23:12:51

OpenSSL/Tomcat HTTPS 搭建的相关文章

apache tomcat https应用

一.总结前一天的学习 在前一天的学习中我们知道.了解并掌握了Web Server结合App Server是怎么样的一种架构,并且亲手通过Apache的Http Server与Tomcat6进行了整合的实验. 这样的架构的好处在于: ü   减轻App Server端的压力,用Web Server来分压,即Web Server只负责处理静态HTML内容,而App Server专职负责处理Java请求,这对系统的performance是一个极大的提升. ü   安全,Web Server端没有任何J

开启 Tomcat https 服务

实验环境:Mac OSX 10.9.2,Tomcat 7.0.14,JDK 1.6 一.制作自签名 CA 证书(根证书) 首先我们需要明确自己作为 CA(证书发行机构)的好处.自签名证书并不稀奇,许多企业都在使用自签名证书,但一般意义上的自签名证书和自己作为 CA 发行的自签名证书不一样.自己做CA,可以允许我们用自己的根证书(CA 证书)发行叶证书,这样在安装了根证书的客户端上,这个 CA 的所有叶证书都是"可信任"的. CA 证书的制作有两个步骤: 1.创建一个私钥文件: open

基于https搭建加密访问站点

一.基础知识 httpd: ssl ssl模块 单独成包 ssl会话基于IP地址创建,所以,每一个IP仅创建一个SSL会话: ssl握手要完成的工作: 交换协议版本号 选择双方都支持的加密方式 客户端对服务器端实现身份验正 密钥交换 https协议: 基于SSL二进制编码, 443/tcp openssl s_client 客户端验正服务器端证书: 有效性检测:证书是否仍然在有效期内 CA的可信度检测: 证书的完整性检测: 持有者的身份检测 二.Openssl知识的回顾 Cd /etc/pki/

Linux Nginx Https搭建

Nginx Https搭建环境: 1.生成证书 [[email protected] CA]# openssl  genrsa -des3 -out jroa.key 1024        \\创建一个RSA秘钥 Generating RSA private key, 1024 bit long modulus ...............++++++ ..................................++++++ e is 65537 (0x10001) Enter pa

CentOS 7配置tomcat https并改端口为443

CentOS 7配置tomcat https并改端口为443: 安装tomcat: yum install tomcat (默认为tomcat 7) 配置tomcat证书(有公司https key.crt文件情况): openssl pkcs12 -export -in ming.crt -inkey ming.key -out ming.p12 -certfile gd_bundle-g2-g1.crt 设置密码 keytool -importkeystore -alias 1 -destke

?IDEA+Maven+JavaWeb+tomcat项目搭建(图文并茂,详细)

一.创建Maven项目 1:如果刚打开IDEA,显示的是这个页面,我们直接单击 Create New Project(创建项目) 或者 File-> New-> Project 2:选中左侧的Maven –> 右侧选则你的jdk –> 勾选Create from archetype –>再选择maven-archetype-webapp –> 选好后再选择Next 3: 因为是maven项目,所以需要项目的Groupid, ArtifactId, Version 这是M

tomcat的搭建和介绍

第19章 tomcat的搭建 19.1 tomcat学习之前的预备知识 19.1.1 什么是JVM和JDK,JRE JVM????????????java虚拟机,实现一份代码可以在不同的平台执行,具有可移植性,jvm只关注java虚拟机的情况 JDK????????????????java开发环境 JRE????????????????java运行环境 19.2 tomcat的服务部署 19.2.1 tomcat服务的配置 [[email protected] webapps] # cd /se

如何用OpenSSL从https网站上导出SSL的CA证书?

我们在访问https的时候,对于有的程序需要提供访问网站的CA证书,这个时候客户端才能访问系统网站,比如使用TIBCO Business Workspace 5 HTTP send request activty 去访问Google API提供的REST 服务的时候,就需要我们提供www.googleapis.com网站的CA证书.一般来说,用两种比较常用的方式,第一种方式是通过浏览器访问这个网站,然后在网站的地址栏的右边有一个锁,可以通过点击这个锁来查看和导入证书,这种方式只适合那种网站可以在

基于openssl的https服务的配置

openssl实现私有CA,并配置基于openssl的https服务的配置,原理如下图 在CA服务器上实现私有CA步骤如下: 1.生成一对密钥 2.生成自签证书 基本的配置如下代码; [[email protected] CA]# pwd /etc/pki/CA [[email protected] CA]# (umask 077;openssl genrsa -out private/cakey.pem 2048) [[email protected] CA]# openssl req -ne