tomcat配置https相关

服务端证书的生成

一、keytool为Tomcat生成证书(该方法在浏览器提示证书不安全,如果用于写app的https接口,app 端访问失败)

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

keytool -genkey -v -alias tomcat -keyalg RSA -keystore /Users/用户/Desktop/tomcat.keystore -validity 36500

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

在命令行填写必要参数:
A、 输入keystore密码:此处需要输入大于6个字符的字符串。
B、 “您的名字与姓氏是什么?”这是必填项,并且必须是tomcat部署主机的域名或者IP[如:baidu.com 或者 10.1.25.251](就是你将来要在浏览器中输入的访问地址),否则浏览器会弹出警告窗口,提示用户证书与所在域不匹配。在本地做开发测试时,应填入“localhost”。
C、 你的组织单位名称是什么?”、“您的组织名称是什么?”、“您所在城市或区域名称是什么?”、“您所在的州或者省份名称是什么?”、“该单位的两字母国家代码是什么?”可以按照需要填写也可以不填写直接回车,在系统询问“正确吗?”时,对照输入信息,如果符合要求则使用键盘输入字母“y”,否则输入“n”重新填写上面的信息。
D、 输入的主密码,这项较为重要,会在tomcat配置文件中使用,建议输入与keystore的密码一致,设置其它密码也可以,完成上述输入后,直接回车则在你在第二步中定义的位置找到生成的文件。

二、StartCom生成免费的ssl证书

参考教程StartSSL免费SSL证书申请和账户注册完整过程

提示:在“2、填写CSR”步骤之前需要已经生成了csr证书,如下步骤:(Mac系统)
MAC OS自带了OpenSSL,所以不用去编译那一坨跟SHIT一样的源码。直接在命令行里使用OPENSSL就可以。
第一步:打开命令行工具,然后输入 openssl打开openssl
接着执行:openssl req -new -nodes -keyout server.key -out server.csr当前目录下将产生两个文件:server.key 和 server.csr。
在这一命令执行的过程中,系统会要求您填写如下信息:
Country Name (2 letter code):使用国际标准组织(ISO)国码格式,填写2个字母的国家代号。中国请填写CN。
State or Province Name (full name): 省份,比如填写Shanghai
Locality Name (eg, city): 城市,比如填写Shanghai
Organization Name (eg, company): 组织单位,比如填写公司名的拼音
Organizational Unit Name (eg, section): 比如填写IT Dept
Common Name (eg, your websites domain name): 行使 SSL 加密的网站地址。请注意这里并不是单指您的域名,而是直接使用 SSL 的网站名称 例如:pay.abc.com。 一个网站这里定义是:abc.com 是一个网站;www.abc.com是另外一个网站; pay.abc.com 又是另外一个网站。 注意:这个服务器域名应该和邮件客户端软件设置的SMTP/POP3服务器名称一致。
Email Address: 邮件地址,可以不填
A challenge password: 可以不填
An optional company name:可以不填

第二步:将csr中内容复制,粘贴到下图框内,提交
这里写图片描述
然后下载
这里写图片描述

第三步:tomcat添加crt证书
将下载的server.crt和server.key,执行下面命令,导出p12文件

openssl pkcs12 -export -in server.crt -inkey server.key -out server.p12 -name server

将p12文件整成tomcat能使用的keystore:

keytool -importkeystore -srckeystore server.p12 -srcstoretype PKCS12 -destkeystore server.jks

配置tomcat

1、打开Tomcat根目录下的/conf/server.xml修改如下:

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
修改参数=>
<Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="443" />
<!--
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
              maxThreads="150" scheme="https" secure="true"
              clientAuth="false" sslProtocol="TLS"/>
 -->
去掉注释且修改参数=>
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" keystoreFile="证书文件的位置" keystorePass="证书密码"/>

注释:两个参数,分别是证书文件的位置和tomcat的主密码,在证书文件生成过程中做了设置

<!--
   <Connector port="8009" enableLookups="false" protocol="AJP/1.3" redirectPort="8443" />
-->
修改参数=>
<Connector port="8009" enableLookups="false" protocol="AJP/1.3" redirectPort="443" />

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>

在这里要注意:
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就可以了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章