mac tomcat https

一、HTTPS的基本工作原理:

HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL协议不仅仅是一套加密传输的协议,更是一件经过艺术家精心设计的艺术品,TLS/SSL中使用了非对称加密,对称加密以及HASH算法。握手过程的简单描述如下:

1.浏览器将自己支持的一套加密规则发送给网站。

2.网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。

3.获得网站证书之后浏览器要做以下工作:

a) 验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。

b) 如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。

c) 使用约定好的HASH计算握手消息,并使用生成的随机数(密码)对消息进行加密,最后将之前生成的所有信息发送给网站。

4.网站接收浏览器发来的数据之后要做以下的操作:

a) 使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。

b) 使用密码加密一段握手消息,发送给浏览器。

5.浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。

这里浏览器与网站互相发送加密的握手消息并验证,目的是为了保证双方都获得了一致的密码,并且可以正常的加密解密数据,为后续真正数据的传输做一次测试。另外,HTTPS一般使用的加密与HASH算法如下:

非对称加密算法:RSA,DSA/DSS

对称加密算法:AES,RC4,3DES

HASH算法:MD5,SHA1,SHA256

其中非对称加密算法用于在握手过程中加密生成的密码,对称加密算法用于对真正传输的数据进行加密,而HASH算法用于验证数据的完整性。由于浏览器生成的密码是整个数据加密的关键,因此在传输的时候使用了非对称加密算法对其加密。非对称加密算法会生成公钥和私钥,公钥只能用于加密数据,因此可以随意传输,而网站的私钥用于对数据进行解密,所以网站都会非常小心的保管自己的私钥,防止泄漏。

TLS握手过程中如果有任何错误,都会使加密连接断开,从而阻止了隐私信息的传输。

二、服务端证书的生成:

打开mac上的终端,使用keytool为Tomcat生成证书,假定目标机器的域名是“localhost”,keystore文件存放在“/Users/用户名/工作/CA/”目录下,名称叫做“tomcat.keystore”,使用“RSA”加密,口令为“password”,过期时间为100年,使用如下命令生成:

keytool -genkey -v -alias tomcat -keyalg RSA -keystore /Users/用户名/工作/CA/tomcat.keystore -validity 36500

(参数简要说明:“/Users/用户名/工作/CA/tomcat.keystore”是证书文件的保存路径,证书文件名称是tomcat.keystore ;“-validity 36500”含义是证书有效期,36500表示100年,默认值是90天 “tomcat”为自定义证书名称)。

在命令行填写必要参数:

A、 输入keystore密码:此处需要输入大于6个字符的字符串

B、 “您的名字与姓氏是什么?”这是必填项,并且必须是tomcat部署主机的域名或者IP[如:gbcom.com 或者
10.1.25.251](就是你将来要在浏览器中输入的访问地址),否则浏览器会弹出警告窗口,提示用户证书与所在域不匹配。在本地做开发测试时,应填入“localhost”。

C、
你的组织单位名称是什么?”、“您的组织名称是什么?”、“您所在城市或区域名称是什么?”、“您所在的州或者省份名称是什么?”、“该单位的两字母国家代码是什么?”可以按照需要填写也可以不填写直接回车,在系统询问“正确吗?”时,对照输入信息,如果符合要求则使用键盘输入字母“y”,否则输入“n”重新填写上面的信息。

D、 输入的主密码,这项较为重要,会在tomcat配置文件中使用,建议输入与keystore的密码一致,设置其它密码也可以,完成上述输入后,直接回车则在你在第二步中定义的位置找到生成的文件。

三、客户端证书的生成:

为浏览器生成证书,以便让服务器来验证它。为了能将证书顺利导入至IE和Firefox,证书格式应该是PKCS12,因此,使用如下命令生成:

keytool -genkey -v -alias mykey -keyalg RSA -storetype PKCS12 -keystore /Users/用户名/工作/CA/mykey.p12

(mykey为自定义)

对应的证书库存放在“/Users/用户名/工作/CA/mykey.p12”,客户端的CN可以是任意值。双击mykey.p12文件,即可将证书导入至浏览器(客户端)。

四、服务端信任客户端证书:

由于是双向SSL认证,服务器必须要信任客户端证书,因此,必须把客户端证书添加为服务器的信任认证。由于不能直接将PKCS12格式的证书库导入,必须先把客户端证书导出为一个单独的CER文件,使用如下命令:

keytool -export -alias mykey -keystore /Users/用户名/工作/CA/mykey.p12 -storetype PKCS12 -storepass password -rfc -file /Users/用户名/工作/CA/mykey.cer

(mykey为自定义与客户端定义的mykey要一致,password是你设置的密码)。通过以上命令,客户端证书就被我们导出到“/Users/用户名/工作/CA/mykey.cer”文件了。

下一步,是将该文件导入到服务器的证书库,添加为一个信任证书使用命令如下:

keytool -import -v -file /Users/用户名/工作/CA/mykey.cer -keystore /Users/用户名/工作/CA/tomcat.keystore

通过list命令查看服务器的证书库,可以看到两个证书,一个是服务器证书,一个是受信任的客户端证书:

keytool -list -keystore /Users/用户名/工作/CA/tomcat.keystore

(tomcat为你设置服务器端的证书名)。

五、客户端信任服务端证书:

由于是双向SSL认证,客户端也要验证服务器证书,因此,必须把服务器证书添加到浏览器的“受信任的根证书颁发机构”。由于不能直接将keystore格式的证书库导入,必须先把服务器证书导出为一个单独的CER文件,使用如下命令:

keytool -keystore /Users/用户名/工作/CA/tomcat.keystore -export -alias tomcat -file /Users/用户名/工作/CA/tomcat.cer

(tomcat为你设置服务器端的证书名)。

通过以上命令,服务器证书就被我们导出到“/Users/用户名/工作/CA/tomcat.cer”文件了。双击tomcat.cer文件,按照提示安装证书,将证书填入到“受信任的根证书颁发机构”。

六、配置Tomcat服务器使其支持HTTPS:

1、打开Tomcat根目录下的/conf/server.xml,找到Connector port=”8443”配置段,去掉注释并修改如下:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="true" sslProtocol="TLS"
               keystoreFile="/Users/用户名/工作/CA/tomcat.keystore" keystorePass="password"
               truststoreFile="/Users/用户名/工作/CA/tomcat.keystore" truststorePass="password"/>

2、打开/conf/web.xml,在最后添加如下内容进行HTTPS强制访问:

    <login-config>
        <auth-method>CLIENT-CERT</auth-method>
        <realm-name>Client Cert Users-only Area</realm-name>
    </login-config>

    <security-constraint>
        <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就能支持SSL双向认证了。

在这里要注意:

1、tomcat6中protocol=”HTTP/1.1”,

tomcat7中protocol=”org.apache.coyote.http11.Http11Protocol”;

2、如果要用Eclipse进行测试,必须修改Eclipse工作目录(workspace)下Servers文件夹下的tomcat配置文件才能生效,修改tomcat实际目录下的配置文件是无效的,切记!

3、server.xml文件中非SSL的Connector不能删除,删除后tomcat启动不了,会报超时错误,切记!

4、如果只是支持客户端认证服务端把clientAuth改为false就可以了。

时间: 2024-10-25 18:47:39

mac tomcat https的相关文章

开启 Tomcat https 服务

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

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.自

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协议(Tomcat HTTPS/SSL 配置)

通常商用服务器使用https协议需要申请SSL证书,证书都是收费的,价格有贵的有便宜的.它们的区别是发行证书的机构不同,贵的证书机构更权威,证书被浏览器否决的几率更小. 非商业版本可以通过keytool来生成. 用keytool工具生成证书与配置 1.相关工具说明 此处使用1.7.0_79版本,如图所示: 切换到jdk bin目录下面,如图: 证书密钥生成 1.创建证书 keytool -genkey -alias [your_alias_name] -keyalg RSA -keystore

mac下https方式连接svn连接不上解决方法

以前一个人开发没有考虑代码服务器的问题,现在需要提交代码到服务器,服务器安装了cvs以及svn,一般的Mac OS X都已经安装了subversion客户端,自然是选择svn了,不过碰到了连接不上的问题. 由于客户端使用https访问服务器,是需要进行安全认证的. 为此,在终端输入 svn list  https://192.168.1.103/svn/IOS 出现 Error validating server certificate for 'https://192.168.2.126:44

tomcat https双向认证

没啥可写的,直接看这些博文吧... 注:server.xml 双向认证 注意得配:truststoreFile,单向不用 浏览器客户端p12证书,需要添加到服务器的jks文件中. http://www.blogjava.net/stevenjohn/archive/2012/08/22/385989.html http://www.360doc.com/content/10/0401/23/633992_21237818.shtml http://www.blogjava.net/stevenj

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

Centos下搭建 tomcat https服务器详解

一 .安装java jdk配置环境变量 1. 卸载原有openjdk yum -y remove java-1.7.0-openjdk* yum -y remove tzdata-java.noarch 2. 下载新的jdk 并解压 [[email protected] java]# curl -O http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz [[email protected] j

nginx 反向代理 tomcat (https、虚拟主机)

背景: 有一个JSP开发的网站,需要放在tomcat里面运行,考虑到tomcat处理http请求不是那么强,计划前端添加一个nginx作为反向代理,并且提供https服务,并且通过虚拟主机开代理到指定域名的服务. 我们的域名是www.wzlinux.com. 1.首先是安装nginx和tomcat 2.nginx配置文件如下 包含301调整,以及https证书的设定,我的证书是在阿里云申请的,免费的哦 # # HTTPS server configuration # server {     l