Tomcat7配置双向SSL
Java环境中配置SSL双向认证
在Java环境中配置SSL双向认证在Java环境中配置Https双向认证,需要使用JDK自带的keytool工具,在命令行方式下,生成服务器证书申请文CSR,然后到CA签发服务器证书。
以下为在Tomcat和Weblogic中配置Https双向认证的步骤,环境为JDK1.5。
1.在Tomcat中配置HTTPS双向认证在Tomcat5.0中配置Https双向认证的步骤如下:1.产生keystore文件:keytool -genkey -alias tomcat -keyalg RSA -keystore keystore此时可在当前目录下看到keystore文件。
申请服务器证书时,CN需要和网站的域名或者IP相同,否则IE7会认为该证书是为别的网站颁发的。
2.生成服务器证书申请文件CSR:keytool -certreq -keyalg RSA -alias tomcat -file certreq.csr -keystore keystore此时可在当前目录下看到文件certreq.csr。
把certreq.csr文件内容和DN提交到CA管理员,即可申请到服务器证书。
DN为:CN=192.168.1.25, OU=research, O=cwca, L=YC, ST=NX, C=CN。
从CA获得的服务器证书为user.p7b,可从其中分别导出base64格式的根证和服务器证书:NXCA.cer和client.cer。
3.将根证书导入到keystore文件中:keytool -import -trustcacerts -alias root -file NXCA.cer -keystore keystore4.将服务器证书导入到keystore文件中:keytool -import -alias tomcat -file client.cer -keystore keystore5. 进行Tomcat的配置:把keystore文件拷入%CATALINA_HOME%/conf目录下;修改文件%CATALINA_HOME%/conf/server.xml,知道 <Connector port="8443" 这一行,默认是注释掉的;去掉注释,然后增加两行:keystoreFile="/conf/keystore" keystorePass="12345678"truststoreFile="/conf/keystore" truststorePass="12345678"修改结果如下图:如果clientAuth="false",则服务器不需要客户端证书;如果clientAuth="true",则客户端必须提供证书才能进行访问。
tomcat配置 ssl单向双向 以及keytool使用介绍
1.王华斌本机测试过可行的例子小技巧: keytool -list -v –keystore keystore文件的全路径查看当前keystore文件中包含的证书:*******************************************如下:C:\tomcat5.0.28\jakarta-tomcat-5.0.28\bin>keytool -list -v -keystore "c:\tomcat.keystore"C:\tomcat5.0.28\jakarta-tomcat-5.0.28\bin>keytool -list -v -keystore "C:/ProgramFiles/Java/jdk1.6.0_26/jre/lib/security/cacerts"/kf/201108/100519.htmltomcat ssl单向/双向2011-08-17 13:52:30 我来说两句收藏我要投稿 [字体:小大] tomcat6配置:1.单向认证,就是传输的数据加密过了,但是不会校验客户端的来源2.双向认证,如果客户端浏览器没有导入客户端证书,是访问不了web系统的,找不到地址如果只是加密,我感觉单向就行了。
如果想要用系统的人没有证书就访问不了系统的话,就采用双向单向配置第一步:为服务器生成证书使用keytool 为 tomcat 生成证书,假定目标机器的域名是“ localhost ”, keystore 文件存放在“ c:\tomcat.keystore ”,口令为“ password ”,使用如下命令生成:keytool -genkey -v -alias tomcat -keyalg rsa -validity 3650 -keystorec:\tomcat.keystore -dname "cn=localhost,ou=cn,o=cn,l=cn,st=cn,c=cn" -storepasspassword -keypass password这个tomcat.cer是为了解决不信任时要导入的keytool -export -alias tomcat -keystore c:\tomcat.keystore -file c:\tomcat.cer -storepass password第四步:配置tomcat 服务器打开tomcat 根目录下的 /conf/server.xml ,找到如下配置段,修改如下:<connector port="8443" protocol="http/1.1" sslenabled="true"maxthreads="150" scheme="https" secure="true"clientauth="false" sslprotocol="tls"keystorefile="c:/tomcat.keystore" keystorepass="password" >应用程序的web.xml 可以加上这句话:具体web系统<!-- authorization setting for ssl --><auth-method>client-cert</auth-method><realm-name>client cert users-only area</realm-name></login-config><security-constraint><!-- authorization setting for ssl --><web-resource-collection ><web-resource-name >ssl</web-resource-name><url-pattern>/*</url-pattern></web-resource-collection><user-data-constraint><transport-guarantee>confidential</transport-guarantee></user-data-constraint></security-constraint>到这里启动tomcat,输入https://localhost:8443/这时再打开会弹出一个提示框:证书不可信任,有一个警告,说什么需要机构颁发。
linuxapacheTomcat配置SSL(https)步骤
linuxapacheTomcat配置SSL(https)步骤1. https简介它是由Netscape开发并内置于其浏览器中,⽤于对数据进⾏压缩和解压操作,并返回⽹络上传送回的结果。
HTTPS实际上应⽤了Netscape的安全套接字层(SSL)作为HTTP应⽤层的⼦层。
(HTTPS使⽤端⼝443,⽽不是象HTTP那样使⽤端⼝80来和TCP/IP进⾏通信。
)SSL使⽤40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。
HTTPS和SSL⽀持使⽤X.509数字认证,如果需要的话⽤户可以确认发送者是谁。
也就是说它的主要作⽤可以分为两种:⼀种是建⽴⼀个信息安全通道,来保证数据传输的安全;另⼀种就是确认⽹站的真实性。
2. HTTPS和HTTP的区别 ⼀、https协议需要到ca申请证书,⼀般免费证书很少,需要交费。
⼆、http是超⽂本传输协议,信息是明⽂传输,https 则是具有安全性的ssl加密传输协议。
三、http和https使⽤的是完全不同的连接⽅式,⽤的端⼝也不⼀样,前者是80,后者是443。
四、http的连接很简单,是⽆状态的;HTTPS协议是由SSL+HTTP协议构建的可进⾏加密传输、⾝份认证的⽹络协议,⽐http协议安全。
3. SSL介绍为Netscape所研发,⽤以保障在Internet上数据传输之安全,利⽤数据加密(Encryption)技术,可确保数据在⽹络上之传输过程中不会被截取及窃听。
⽬前⼀般通⽤之规格为40 bit之安全标准,美国则已推出128 bit之更⾼安全标准,但限制出境。
只要3.0版本以上之I.E.或Netscape浏览器即可⽀持SSL。
当前版本为3.0。
它已被⼴泛地⽤于Web浏览器与服务器之间的⾝份认证和加密数据传输。
SSL协议位于TCP/IP协议与各种应⽤层协议之间,为数据通讯提供安全⽀持。
SSL协议可分为两层:SSL记录协议(SSL Record Protocol):它建⽴在可靠的传输协议(如TCP)之上,为⾼层协议提供数据封装、压缩、加密等基本功能的⽀持。
Tomcat 7 SSL配置文档(https)
Tomcat 7.0 SSL配置(https)
1.Java key tool 方式配置
1)确保系统环境变量中的path变量已经添加java目录里的bin目录
2)打CMD命令行窗口,输入以下命令:keytool -v -genkey -alias tomcat -keyalg RSA
-keystore d:/tomcat.keystore -validity 36500
注:这里的tomcat、tomcat.keystore名字可以自定义,d:/tomcat.keystore
是文件保存位置,36500表示证书的有效期是36500天大概100年。
3)将会提示输入两次密码(这里我输入的是tomcat)
4)然后要一个个提示输入信息,任意输入即可
5)输入完后进行确认:输入y即可
6)然后会提示输入这个证书的密码和keystore的密码相同,按回车就行了,
这里直接回车就行了。
7)完成后到文件保存位置复制文件放tomcat主目录里的bin目录下
8)返回到tomcat主目录,进入conf目录,编辑service.xml文件
9)找到下图位置,把原本注释着的<Connector……的注释解开或复制一份
放在下面,并添加keystoreFile(证书文件位置),keystorePass(证书密码)
10)配置完成,启动服务器测试,到bin目录打开tomcat7.exe
11)打开浏览器访问https://localhost:8443,能够进入tomcat的首页就是成功
了。
12)。
Tomcat服务器配置https双向认证
Tomcat服务器配置https双向认证Tomcat服务器配置https双向认证步骤一、HTTPS原理1、HTTP、HTTPS、SSL、TLS介绍与相互关系(1)、HTTP:平时浏览网页时候使用的一种协议。
HTTP协议传输的数据都是未加密的(明文),因此使用HTTP协议传输隐私信息非常不安全。
(2)、HTTPS:为了保证隐私数据能加密传输,采用SSL/TLS协议用于对HTTP协议传输的数据进行加密,也就是HTTPS。
(3)、SSL:SSL(Secure Sockets Layer)协议是由网景公司设计,后被IETF定义在RFC 6101中。
目前的版本是3.0。
(4)、TLS:TLS可以说是SSL的改进版。
是由IETF对SSL 3.0进行了升级而出现的,定义在RFC 2246。
实际上我们现在的HTTPS都是用的TLS协议。
2、TLS/SSL特点(1)、HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。
(2)、TLS/SSL中使用了非对称加密,对称加密以及HASH算法。
其中非对称加密算法用于在握手过程中加密生成的密码,对称加密算法用于对真正传输的数据进行加密,而HASH算法用于验证数据的完整性。
(3)、TLS握手过程中如果有任何错误,都会使加密连接断开,从而阻止了隐私信息的传输。
二、生成服务器证书1、打开命令控制台,进入%JAVA_HOME%/bin目录:cd D:\Program Files\Java\jdk1.6.0_22\bin2、使用keytool为Tomcat生成证书keytool -genkey -v -alias serverCert -keyalg RSA -keystore G:\serverCert.keystore -validity 3650参数:(1)、“G:\serverCert .keystore”含义是证书文件的保存路径,证书文件名称是serverCert .keystore;(2)、“-validity 3650”含义是证书有效期,3650表示10年,默认值是90天;“serverCert ”为自定义证书名称。
Tomcat配置SSL
Tomcat配置SSL1. 配置Web服务器的SSL本系统的Web服务运行在tomcat服务器上。
配置服务器的SSL,需要为服务器申请证书,并进行一系列的设置。
(1)生成服务器证书请求文件(CSR)生成私钥和CSR文件需要使用keytool。
Keytool.exe通常在%JAVA_HOME%/bin目录下。
使用以下命令生成keystore和keyEntry:keytool –genkey –alias [keyEntry_name] –keyalg RSA –keystore [keystore_name]genkey:产生密钥对。
该证书链和私钥将储存于alias所标识的新密钥仓库中。
alias:密钥别名。
keyalg:用于生成密钥对的算法。
keystore:密钥仓库名称。
keytool会提示输入keystore的密码,您的名字与姓氏、单位、组织、城市、省份、国家。
其中“您的名字与姓氏”要与网站的域名一致。
使用以下命令生成CSR:keytool –certreq –alias [keyEntry_name] –file request.crs –keystore [keystore_name]certreq:生成PKCS#10格式的证书签名请求,即CSR。
输入keystore的密码,即可在本地目录中生成request.crs。
把此CRS文件发给CA,等待CA颁发证书。
(2)导入证书CA根据CRS颁发证书后,需要把证书导入到keystore中。
使用以下命令导入服务器证书:keytool –import –trustcacerts –alias [keyEntry_name] –filecertificate.txt –keystore [keysore_name]import:向密钥库导入证书。
trustcacerts:指定该证书链为信任链。
file:证书或pkcs7证书链文件。
使用以下命令导入CA证书:keytool –import –trustcacerts –alias [CA_name] –file certificate.txt –keystore [keysore_name](3)设置Tomcat的SSL连接编辑T omcat的配置文件使其支持SSL。
Android HttpClient 访问 Tomcat双向SSL验证服务器
Android HttpClient 访问 Tomcat双向SSL验证服务器项目需要,在Android WebView上访问Tomcat SSL双向验证。
本文只解决了Android HttpClient 访问Tomcat双向SSL验证服务器。
环境准备:●Windows 2003 EE;●OpenSSL;●Tomcat 7;过程记录如下:1.用OpenSSL和keytools做CA,Client,Server的证书、私钥。
2.搭建Tomcat的双向验证的Web服务器。
3.用IE验证SSL的双向验证的有效性。
上面的三步参见文档:tomcat下https ssl 双向认证唯一的问题是:Tomcat7的配置不同。
server.xml 加入如下XML代码:<ConnectorclassName="org.apache.catalina.connector.http.HttpConnector"protocol="org.apache.coyote.http11.Http11NioProtocol"port="8443" minSpareThreads="5" maxSpareThreads="75"enableLookups="true" disableUploadTimeout="true"acceptCount="100" maxThreads="200"scheme="https" secure="true" SSLEnabled="true"clientAuth="true" sslProtocol="TLS"keystoreFile="C:/OpenSSL/server/server_keystore"keystorePass="66666"/>keystorePass 是自己server_keystore的密码单向验证把clientAuth="true" 修改为false4.编写Android的SSL验证程序,但只能做到单向验证服务器的证书。
Tomcat7-https双向认证
Tomcat7-双向认证配置一、硬件环境一台虚拟机,操作系统window server 2012 r2,内存4G,硬盘:100G.二、软件jdk1.6.0_24,apache-tomcat-7.0.57,KeyTool三、技术术语CSRCertificate Signing Request,数字证书签发申请.个人信息交换:pfx、p12X.509证书:cer,crtKeytoolKeytool 是一个Java数据证书的管理工具,Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里,包含两种数据:1、密钥实体(Key entity)-密钥(secret key)或者是私钥和配对公钥(采用非对称加密);2、可信任的证书实体(trusted certificate entries)-只包含公钥.参数说明JDK中keytool常用参数说明:-genkey 在用户主目录中创建一个默认文件”.keystore”,还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书(在没有指定生成位置的情况下,keystore会存在用户系统默认目录)-alias 产生别名每个keystore都关联这一个独一无二的alias,这个alias通常不区分大小写-keystore 指定密钥库的名称(产生的各类信息将不在.keystore文件中)-keyalg 指定密钥的算法(如RSA DSA,默认值为:DSA)-validity 指定创建的证书有效期多少天(默认90)-keysize 指定密钥长度(默认1024)-storepass 指定密钥库的密码(获取keystore信息所需的密码)-keypass 指定别名条目的密码(私钥的密码)--------------------------可以编辑的精品文档,你值得拥有,下载后想怎么改就怎么改--------------------------- ==========================================================================-dname 指定证书发行者信息其中:“CN=名字与姓氏,OU=组织单位名称,O=组织名称,L=城市或区域名称,ST=州或省份名称,C=单位的两字母国家代码”-list 显示密钥库中的证书信息keytool -list -v -keystore 指定keystore -storepass 密码-v 显示密钥库中的证书详细信息-export 将别名指定的证书导出到文件keytool -export -alias 需要导出的别名-keystore 指定keystore -file 指定导出的证书位置及证书名称-storepass 密码-file 参数指定导出到文件的文件名-delete 删除密钥库中某条目keytool -delete -alias 指定需删除的别-keystore 指定keystore –storepass 密码-printcert 查看导出的证书信息keytool -printcert -file g:\sso\michael.crt-keypasswd 修改密钥库中指定条目口令keytool -keypasswd -alias 需修改的别名-keypass 旧密码-new 新密码-storepass keystore密码-keystore sage-storepasswd 修改keystore口令keytool -storepasswd -keystore g:\sso\michael.keystore(需修改口令的keystore) -storepass pwdold(原始密码) -new pwdnew(新密码)-import 将已签名数字证书导入密钥库keytool -import -alias 指定导入条目的别名-keystore 指定keystore -file 需导入的证书四、配置JDK环境五、服务端把tomcat7解压到D:\tomcat7文件夹中,创建keystore的文件夹。
Tomcat7.0.22配置SSL
.keystroe
Step 3 - Using OpenSSL to Create Root Certificate
Tomcat可以使用两种不同的SSL实现方式:
1、作为Java运行环境的一部分来实现SSL(在未装APR时为Tomcat默认采用此种方式实现),即JSSE(Java Secure Sockets Extension)
2、APR(Apache Portable Runtime)实现(已安装APR时Tomcat会使用此种方式实现),默认情况下使用OpenSSL引擎
new_certs_dir = $dir/newcerts # default place for new certs.
certificate = $dir/cacert.crt # The CA certificate
serial = $dir/serial # The current serial number
crlnumber = $dir/crlnumber # the current crl number
crl = $dir/crl.pem # The current CRL
private_key = $dir/private/cakey.key# The private key
RANDFILE = $dir/private/.rand # private random number file
使用APR时,必须确保SSLEngine属性值没有设置成“off”,如果你指定另一个值,它必须是一个有效的引擎的名称。
通过双向证书认证访问由tomcat7和Axis2搭建的web服务(上)
通过双向证书认证访问由tomcat7和Axis2搭建的web服务(上)TAG标签:Web服务双向证书认证访问tomcat7 Axis2摘要:本文通过一系列的实验步骤描述,向您展示如何使用gSOAP 编写的客户端,通过双向证书认证,访问由tomcat7 和Axis2 搭建的web 服务。
全文循序渐进,分为几个阶段逐步展开,每个阶段相关的注意事项和遇到过的一些问题也一并记录下来供读者参考。
先简单介绍一下需要准备的工具。
•服务端:由tomcat7+axis2 搭建而成•客户端:由gSOAP 工具生成•证书:用openssl 和jdk 自带的keytool 制作•其它:如果在Windows 操作系统下实验,C/C++ 代码可能还会需要一些集成开发环境,如Visual C++2010 或CodeBlocks+MinGW 等。
Java 代码的编译可能会用到eclipse。
此外,为叙述方便,后文的用词上也作一些约定:•将tomcat7 的安装路径记为:<tomcat_home>•将gSOAP 压缩包的解压路径记为:<gsoap_home>•将openssl 的安装路径记为:<openssl_home>•将基于http 的web 服务网址记为:<service_http>•将基于https 的web 服务网址记为:<service_https>搭建基于http 的web 服务准备好java 代码这里编写一个非常简单的sayHello 功能的java 代码,传入参数是一个字符串,返回值则是“Hello”加上传入的字符串。
稍后用其发布web 服务已经足够了,如清单1 所示:清单1. sayHello 源码public class SimpleService{public String sayHello(String name){return "Hello, "+name;}}使用eclipse 或者jdk 自带的javac 命令行工具进行编译,生成SimpleService.class 文件。
Tomcat下使用ssl实现双向认证(http转换为https)
Tomcat下使用ssl实现双向认证(http转换为https)理解单向双向认证:单向认证:客户端向服务器发送消息,服务器接到消息后,用服务器端的密钥库中的私钥对数据进行加密,然后把加密后的数据和服务器端的公钥一起发送到客户端,客户端用服务器发送来的公钥对数据解密,然后在用传到客户端的服务器公钥对数据加密传给服务器端,服务器用私钥对数据进行解密,这就完成了客户端和服务器之间通信的安全问题,但是单向认证没有验证客户端的合法性。
双向认证:客户端向服务器发送消息,首先把消息用客户端证书加密然后连同时把客户端证书一起发送到服务器端,服务器接到消息后用首先用客户端证书把消息解密,然后用服务器私钥把消息加密,把服务器证书和消息一起发送到客户端,客户端用发来的服务器证书对消息进行解密,然后用服务器的证书对消息加密,然后在用客户端的证书对消息在进行一次加密,连同加密消息和客户端证书一起发送到服务器端,到服务器端首先用客户端传来的证书对消息进行解密,确保消息是这个客户发来的,然后用服务器端的私钥对消息在进行解密这个便得到了明文数据。
1.SSL(Server Socket Layer)简介在网络上信息在源-宿的传递过程中会经过其它的计算机。
一般情况下,中间的计算机不会监听路过的信息。
但在使用网上银行或者进行信用卡交易的时候有可能被监视,从而导致个人隐私的泄露。
由于Internet和Intranet体系结构的原因,总有某些人能够读取并替换用户发出的信息。
随着网上支付的不断发展,人们对信息安全的要求越来越高。
因此Netscape 公司提出了SSL协议,旨在达到在开放网络(Internet)上安全保密地传输信息的目的,这种协议在WEB上获得了广泛的应用。
之后IETF(/doc/bb407972.html,)对SSL作了标准化,即RFC2246,并将其称为TLS(Transport Layer Security),从技术上讲,TLS1.0与SSL3.0的差别非常微小。
java+tomcat+openssl,https单向认证、双向认证(亲测)
java+tomcat+openssl,https单向认证、双向认证(亲测)展开全文1.生成根证书、服务端证书、客户端证书1.1 生成CA根证书1.生成跟证书私钥root_private.key2.openssl genrsa -out root_private.key 10243.(私钥中包含附加信息,可推到出公钥。
使用私钥生成的证书包含对应公钥)4.生成根证书签发请求文件root.csr5.openssl req -new -key root_private.key -out root.csr -subj "/C=CN/ST=GuangDong/L=ShenZhen/O=Testcompany/OU=Test company/CN=Test company"6.生成X.509格式的CA根证书root.crt7.openssl x509 -req -days 365 -in root.csr -out root.crt -signkey root_private.key8.根据root.crt证书生成truststore JKS文件root.truststore,输入秘钥库密码123456。
9.这一步只针对双向认证,单向不需要。
10.keytool -keystore root.truststore -import -trustcacerts -file root.crt11.输入yes,信任此证书。
1.2 使用根证书签发服务端证书(正常是先签发二级证书,由二级证书对服务端签发)1.生成服务端私钥文件server_private.key2.openssl genrsa -out server_private.key 10243.签名请求文件server.csr4.openssl req -new -key server_private.key -out server.csr -subj "/C=CN/ST=GuangDong/L=ShenZhen/O=test-server/OU=test-server/CN=test-server"5.使用根证书签发服务端证书server.crt6.openssl x509 -req -days 365 -sha1 -CA root.crt -CAkey root_private.key -CAserial ca.srl -CAcreateserial -in server.csr -out server.crt7.查看证书信息8.openssl x509 -in server.crt -text -noout9.将服务端证书转换为pkcs12格式,密码12345610.openssl pkcs12 -export -in server.crt -inkey server_private.key -out server.p1211.生成服务端秘钥库server.keystore,秘钥库密码也为12345612.keytool -importkeystore -srckeystore server.p12 -destkeystore server.keystore -srcstoretype pkcs1213.查看keystore14.keytool -list -v -keystore server.keystore1.3 使用根证书签发客户端证书•生成客户端私钥文件client_private.key•openssl genrsa -out client_private.key 1024•签名请求文件client.csr•openssl req -new -key client_private.key -out client.csr -subj "/C=CN/ST=GuangDong/L=ShenZhen/O=test-client/OU=test-client/CN=test-client"•使用根证书签发客户端证书client.crt•openssl x509 -req -days 365 -sha1 -CA root.crt -CAkey root_private.key -CAserial ca.srl -CAcreateserial -in client.csr -out client.crt•证书转换为pkcs12格式,密码123456•以上生成的公私钥和证书都是PEM格式的,服务端、浏览器一般使用PKCS12格式。
Tomcat配置SSL证书(PFX证书)
Tomcat配置SSL证书(PFX证书)公司项⽬,应该是阿⾥云服务器在windows2008 R2搭建的Tomcat部署SSL证书,本⽂以PFX证书为例。
配置好之后开始⼀、什么是SSL(证书)?SSL证书服务(Alibaba Cloud SSL Certificates Service)由阿⾥云联合多家国内外数字证书管理和颁发的权威机构、在阿⾥云平台上直接提供的服务器数字证书。
您可以在阿⾥云平台上直接购买、或者免费获取所需类型的数字证书,并⼀键部署在阿⾥云产品中,以最⼩的成本将您的服务从HTTP 转换成HTTPS,实现⽹站的⾝份验证和数据加密传输。
原⽂:什么是SSL证书?⼆、有什么⽤?以最⼩的成本将您的服务从HTTP转换成HTTPS,实现⽹站的⾝份验证和数据加密传输。
三、怎么⽤?Tomcat部署SSL证书,本⽂以PFX证书为例。
⼀、下载证书在证书控制台下载Tomcat版本证书,下载到本地的是⼀个压缩⽂件,解压后⾥⾯包含.pfx⽂件是证书⽂件,pfx_password.txt是证书⽂件的密码。
友情提⽰:每次下载都会产⽣新密码,该密码仅匹配本次下载的证书。
如果需要更新证书⽂件,同时也要更新密码。
申请证书时如果没有选择系统创建CSR,则没有该⽂件,请选择其它服务器下载.crt⽂件,利⽤openssl命令⾃⼰⽣成pfx证书。
⼆、安装证书2.1 将证书拷贝⾄某⼀⽬录本例是在tomcat⽬录下新建了⽬录2.2 配置server.xml2.3(可选配置)配置web.xml⽂件强制将http跳转⾄https<login-config><!-- Authorization setting for SSL --><auth-method>CLIENT-CERT</auth-method><realm-name>Client Cert Users-only Area</realm-name></login-config><security-constraint><!-- Authorization setting for SSL --><web-resource-collection ><web-resource-name >SSL</web-resource-name><url-pattern>/*</url-pattern></web-resource-collection><user-data-constraint><transport-guarantee>CONFIDENTIAL</transport-guarantee></user-data-constraint></security-constraint>2.4 重启tomcat服务器2.5 (注意项)阿⾥云ECS需注意在安全组配置443端⼝注意:2.2配置server.xml步骤中,为443端⼝配置protocol协议时注意,官⽅⽂档是Http/1.1,但笔者验证时,发现⽆法访问https,遂改为 protocol=“org.apache.coyote.http11.Http11NioProtocol” ,各位读者若是配置正确,却⽆法访问,可以注意⼀下这⾥的protocol。
Tomcat配置SSL安全证书
Tomcat配置SSL安全证书Tomcat配置SSL安全证书完全按照 aliyun的教程即可:我的服务器是centos7 前期安装了:openSSL,tomcat , java 等⼀,证书下载(aliyun后台下载证书格式是pfx)⼆,检查环境(服务器端⼝,阿⾥云后台安全组等端⼝问题排除了)三,证书复制到Tomcat⽬录(/Tomcat安装⽬录/cert/)四,配置(主要配置/Tomcat安装⽬录/conf/server.xml⽂件修改和配置)下⾯是我服务器的⽂件<?xml version="1.0" encoding="UTF-8"?><!--Licensed to the Apache Software Foundation (ASF) under one or morecontributor license agreements. See the NOTICE file distributed withthis work for additional information regarding copyright ownership.The ASF licenses this file to You under the Apache License, Version 2.0(the "License"); you may not use this file except in compliance withthe License. You may obtain a copy of the License at/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License.--><!-- Note: A "Server" is not itself a "Container", so you may notdefine subcomponents such as "Valves" at this level.Documentation at /docs/config/server.html--><Server port="8005" shutdown="SHUTDOWN"><Listener className="org.apache.catalina.startup.VersionLoggerListener"/><!-- Security listener. Documentation at /docs/config/listeners.html<Listener className="org.apache.catalina.security.SecurityListener" />--><!--APR library loader. Documentation at /docs/apr.html --><Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on"/><!-- Prevent memory leaks due to use of particular java/javax APIs--><Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/><Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/><Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/><!-- Global JNDI resourcesDocumentation at /docs/jndi-resources-howto.html--><GlobalNamingResources><!-- Editable user database that can also be used byUserDatabaseRealm to authenticate users--><Resource name="UserDatabase" auth="Container"type="erDatabase"description="User database that can be updated and saved"factory="ers.MemoryUserDatabaseFactory"pathname="conf/tomcat-users.xml"/></GlobalNamingResources><!-- A "Service" is a collection of one or more "Connectors" that sharea single "Container" Note: A "Service" is not itself a "Container",so you may not define subcomponents such as "Valves" at this level.Documentation at /docs/config/service.html--><Service name="Catalina"><!--The connectors can use a shared executor, you can define one or more named thread pools--><!--<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"maxThreads="150" minSpareThreads="4"/>--><!-- A "Connector" represents an endpoint by which requests are receivedand responses are returned. Documentation at :Java HTTP Connector: /docs/config/http.htmlJava AJP Connector: /docs/config/ajp.htmlAPR (HTTP/AJP) Connector: /docs/apr.htmlDefine a non-SSL/TLS HTTP/1.1 Connector on port 8080--><Connector port="80" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="443"/><!--按照aliyun教程配置SSL :https:///document_detail/98576.htmlhttps:///document_detail/102939.html--><!--(⼀)#找到以上参数,去掉<!- - 和 - ->这对注释符并修改为如下参数:<Connector port="443" #将Tomcat中默认的HTTPS端⼝Connector port 8443修改为443。
Tomcat下配置SSL(单双向)加密传输的方法
一.Tomcat下配置SSL(单向)加密传输的具体步骤1.生成一个keystore文件(包含证书),文件位置可以自己选择,一般将其放在tomcat下的conf配置文件夹下:对于不同的操作系统,目录的书写有所不同:若是xp系统存放keystore文件的目录为:D:/apache-tomcat-6.0.20/conf/a.首先单击”开始”→”运行”→”cmd”,b.然后执行下边的一条语句:第一种书写方法:keytool -genkey -alias tomcat -keyalg RSA -keystoreD:/apache-tomcat-6.0.20/conf/tomcat.keystore-validity 36500第二种书写方法:keytool -genkey -alias tomcat -keypass 11111111 -keyalg RSA -keysize 1024 -validity 36500 -keystore D:/apache-tomcat-6.0.20/conf/tomcat.keystore -storepass11111111 -dname "CN=192.168.27.102, OU=192.168.27.102, O=192.168.27.102,L=(西安), ST=(陕西), C=(cn)"红色标记部分是说明keystore文件的生成目录,蓝色标记的部分是说明生成的keystore文件的名称。
如下图:c.按照提示信息输入密码、提供你的信息即可。
如下图:至此完成了对keystore文件的生成。
【注意】它会在前后问你两次密码(如上图),第二次直接回车就行了,如果两个密码不一样,将会出现java.io.IOException错误。
2.修改tomcat/conf/server.xml在server.xml配置文件中启用如下一段代码:<Connector port="8443"protocol="HTTP/1.1" SSLEnabled="true"maxThreads="150" scheme="https" secure="true"clientAuth="false"sslProtocol="TLS" />将其修改为:<Connector port="8443" protocol="HTTP/1.1"SSLEnabled="true"maxThreads="150" scheme="https" secure="true"keystoreFile="D:/apache-tomcat-6.0.20/conf/tomcat.keystore"keystorePass="11111111"clientAuth="false" sslProtocol="TLS" />注:keystoreFile和keystorePass两个属性,是指定存放证书的路径(如:keystoreFile="D:/apache-tomcat-6.0.20/conf/tomcat.keystore ")和刚才设置的密码(如:keystorePass="11111111")3.同时禁掉http访问配置:<Connector port="8099" protocol="HTTP/1.1"connectionTimeout="20000" redirectPort="8443" URIEncoding="gb2312" />4.重启Tomcat5.防火墙开启8443端口浏览器输入:https:// 192.168.27.102:8443/可以进行验证,如能正常打开页面,则说明配置合适,如果不能配置有问题。
tomcat配置双向SSL认证
SSL——Secure Sockets Layer双向认证(个人理解):客户端认证:客户端通过浏览器访问某一网站时,如果该网站为HTTPS网站,浏览器会自动检测系统中是否存在该网站的信任证书,如果没有信任证书,浏览器一般会拒绝访问,IE会有一个继续访问的链接,但地址栏是红色,给予用户警示作用,即客户端验证服务端并不是强制性的,可以没有服务端的信任证书,当然是否继续访问完全取决于用户自己。
如何去除地址栏的红色警告呢?后续会介绍导入服务端证书到浏览器的方法。
服务端认证:服务端需要获取到客户端通过浏览器发送过来的认证证书,该证书在服务端的证书库中已存在,仅仅是个匹配过程,匹配成功即通过认证,可继续访问网站资源,反之则无法显示网页,后续有截图。
基本逻辑:1、生成服务端密钥库并导出证书;2、生成客户端密钥库并导出证书;3、根据服务端密钥库生成客户端信任的证书;4、将客户端证书导入服务端密钥库;5、将服务端证书导入浏览器。
构建演示系统演示环境:JDK:1.6.0_32Tomcat:apache-tomcat-7.0.27开发工具:MyEclipse 10浏览器:Internet Explorer 9一、生成密钥库和证书可参考以下密钥生成脚本,根据实际情况做必要的修改,其中需要注意的是:服务端的密钥库参数“CN”必须与服务端的IP地址相同,否则会报错,客户端的任意。
key.script1、生成服务器证书库keytool -validity 365-genkey -v -alias server -keyalg RSA -keystore E:\ssl\se rver.keystore -dname"CN=127.0.0.1,OU=icesoft,O=icesoft,L=Haidian,ST=B eijing,c=cn"-storepass123456-keypass1234562、生成客户端证书库keytool -validity 365-genkeypair -v -alias client -keyalg RSA -storetype PKCS12 -keystore E:\ssl\client.p12 -dname"CN=client,OU=icesoft,O=icesoft,L= Haidian,ST=Beijing,c=cn"-storepass123456-keypass1234563、从客户端证书库中导出客户端证书keytool -export -v -alias client -keystore E:\ssl\client.p12 -storetype PKCS12 -storepass123456-rfc -file E:\ssl\client.cer4、从服务器证书库中导出服务器证书keytool -export -v -alias server -keystore E:\ssl\server.keystore -storepass12 3456-rfc -file E:\ssl\server.cer5、生成客户端信任证书库(由服务端证书生成的证书库)keytool -import-v -alias server -file E:\ssl\server.cer -keystore E:\ssl\client.tr uststore -storepass1234566、将客户端证书导入到服务器证书库(使得服务器信任客户端证书)keytool -import-v -alias client -file E:\ssl\client.cer -keystore E:\ssl\server.ke ystore -storepass1234567、查看证书库中的全部证书keytool -list -keystore E:\ssl\server.keystore -storepass123456二、Tomat配置使用文本编辑器编辑${catalina.base}/conf/server.xml找到Connector port="8443"的标签,取消注释,并修改成如下:<Connector port="8443"protocol="org.apache.coyote.http11.Http11NioProtoc ol"SSLEnabled="true"maxThreads="150"scheme="https"secure="true"clientAuth="true"sslProtocol="TLS"keystoreFile="${catalina.base}/key/server.keystore"keystorePass=" 123456"truststoreFile="${catalina.base}/key/server.keystore"truststorePass ="123456"/>备注:keystoreFile:指定服务器密钥库,可以配置成绝对路径,如“D:/key/server.keystore”,本例中是在Tomcat目录中创建了一个名称为key的文件夹,仅供参考。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Tomcat7配置双向SSL
根证书
1.建立CA工作目录
mkdir ca
cd ca
2.生成CA私钥
openssl genrsa -out ca-key.pem 1024
3.生成待签名证书
openssl req -new -out ca-req.csr -key ca-key.pem
//ca-cert.pem即为CA根证书,可将其下发到客户端,导入作为根证书。
私钥changeit
4.用CA私钥自签名
openssl x509 -req -in ca-req.csr -out ca-cert.pem -signkey ca-key.pem -days 365
5.导出pk12
openssl pkcs12 -export -clcerts -in ca-cert.pem -inkey ca-key.pem -out ca-cert.p12
查看证书
openssl x509 -in ca-cert.pem -noout -text –modulus
如果按请求生成CA证书,由证书申请者生成请求文件certreq.txt。
CA端执行签名,生成证书文件1.cer
openssl x509 -req -in c:\certreq.txt -out c:\1.cer -CA ca\ca-cert.pem -CAkey
ca\ca-key.pem -days 365 –Cacreateserial
生成server证书
1.创建私钥
openssl genrsa -out server-key.pem 1024
2.创建证书请求
openssl req -new -out server-req.csr -key server-key.pem
3.自签署证书
openssl x509 -req -in server-req.csr -out server-cert.pem -signkey server-key.pem
-CA ../ca/ca-cert.pem -CAkey ../ca/ca-key.pem -CAcreateserial -days 365
4.将证书导出成浏览器支持的.p12格式,密码changeit
openssl pkcs12 -export -clcerts -in server-cert.pem -inkey server-key.pem -out server.p12
keytool -keystore serverstore.jks -keypass 123456 -storepass 123456 -alias ca -import
-trustcacerts -file ~/ca/ca-cert.pem
keytool -keystore serverstore.jks -keypass 123456 -storepass 123456 -alias server
-import -trustcacerts -file ~/server/server-cert.pem
生成client证书
1.创建私钥:
openssl genrsa -out client-key.pem 1024
2.创建证书请求:
openssl req -new -out client-req.csr -key client-key.pem
3.自签署证书:
openssl x509 -req -in client-req.csr -out client-cert.pem -signkey client-key.pem
-CA ../ca/ca-cert.pem -CAkey ../ca/ca-key.pem -CAcreateserial -days 365
openssl x509 -in client-cert.pem -noout -text –modulus
4.将证书导出成浏览器支持的.p12格式:
openssl pkcs12 -export -clcerts -in client-cert.pem -inkey client-key.pem -out client.p12
密码:changeit
根据ca证书生成jks文件
keytool -keystore truststore.jks -keypass 123456 -storepass 123456 -alias ca -import
-trustcacerts -file ~/ca/ca-cert.pem
导入证书
在客户端浏览器导入ca-cert.p12作为受信任的根证书,client.p12作为个人证书
Tomcat配置server.xml
jsse模式
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="true" sslProtocol="TLS"
keystoreFile="../conf/ssl/server.p12" keystorePass="changeit" keystoreType="PKCS12"
truststoreFile="../conf/ssl/truststore.jks" truststorePass="123456" truststoreType="JKS"/>
apr模式
<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="150"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="true"
SSLEnabled="true"
SSLProtocol="all"
SSLCipherSuite="ALL"
SSLCertificateFile="../conf/ssl/server-cert.pem"
SSLCertificateKeyFile="../conf/ssl/server-key.pem"
SSLCACertificateFile="../conf/ssl/ca-cert.pem"
SSLCACertificatePath="../conf/ssl"
SSLVerifyDepth="15"
SSLVerifyClient="require" />。