您的位置:首页 > 运维架构 > Tomcat

tomcat7.0 + openssl 构建IOS7.1无线安装ipa环境

2015-03-17 10:34 369 查看
之前找的是公司安全组做的证书,也是自签名证书吧。然后最近测试服务器迁了网段,导致ios客户端的cer证书用不了了,就不能正常下载和更新ipa。所以需要重新做个证书,这次我就自己搞个证书,看了下面的资料,验证可用。虽然是tomcat的,但是jboss也类似。关键还是要拿到客户端用的cer证书和服务端用的tomcat证书。注意我做的时候,ca证书和tomcat证书的名字都是ip,如果ca证书的name改了,我不确定能否可用。我做证书的过程参考的是百度文库的,客户端证书选择则是看了下文。

正文开始:

证书的配置过程:

参考页面:http://wenku.baidu.com/view/7f3c491f650e52ea5518987b.html

这里做个转载,并记录过程中遇到的问题,及解决方法

1. 工具:openssl + tomcat7.0 openssl地址:http://files.cnblogs.com/leeshd/OpenSSL.rar,下载后进入安装目录下的bin目录

2. 生成根证书的私钥,生成文件cakey.pem

openssl genrsa -out cakey.pem 1024

3. 根据私钥生成证书申请,生成文件careq.csr

openssl req -new -out careq.csr -key cakey.pem

如果在window系统下,需要添加-config openssl.cnf,linux下则不需要。

4. 根据根证书申请生成自签名根证书,生成文件cacert.pem

openssl x509 -req -n careq.csr -out cacert.pem -signkey cakey.pem -days 3650

生成tomcat证书库文件和证书申请

1. 生成证书库文件 tomcatkey.jks

keytool -genkey -alias
tomcat -keyalg RSA -keysize 1024 -validity "1825" -keypass
123456 -keystore tomcatkey.jks
-storepass 123456

着色部分可以根据具体情况改变

参数:-alias 证书库文件中私钥的别名

-keypass 证书库文件私钥的密码

-keystore 证书库文件的存储路径

-storepass 证书库文件的密码

名字和姓氏必须要输入服务器的域名或者ip地址,建议ip地址,否则部署后会提示 证书不匹配 的错误

2. 根据证书库文件生成证书申请,生成文件certreq.cer

keytool -certreq -alias tomcat_server -sigalg "MD5withRSA" -file certreq.cer -keypass 123456 -keystore tomcatkey.jks -storepass 123456

制作服务器证书并导入证书库

1. 用根证书签名证书申请生成根证书,生成文件tomcatcert.pem

openssl ca -keyfile cakey.pem -cert cacert.pem -in certreq.cer -out tomcatcert.pem -config openssl.cnf -policy policy_anything

如果在window系统下,需要添加-config openssl.cnf,linux下则不需要。

(证书可能失败,原因是openssl证书数据库中已经存储了这个证书,错误输出:failed to update database, IXI_DB error number 2,

解决办法是在目录openssl/democa/index.txt,把内容清空,查看大小为0KB,这个做法会把已有的证书删除,有耐心可以找到那条记录并删除他)

2. 转pem格式为cer格式,生成文件cacert.cer,tomcatcert.cer

openssl x509 -in cacert.pem -out cacert.cer

openssl x509 -in tomcatcert.pem -out tomcatcert.cer

3. 将转换成功的cer文件导入证书库文件中

导入根证书:keytool -keystore tomcatkey.jks -import -alias RootCA -file cacert.cer

导入服务器证书:keytool -keystore tomcatkey.jks -import -alias tomcat_server -file tomcatcert.cer

Tomcat配置

1. server.xml

找到<Connector port="8443" .../>,默认被注释掉的,修改如下:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"

maxThreads="150" scheme="https" secure="true"

clientAuth="false" sslProtocol="TLS"

keystoreFile="E:/tomcatkey.jks" keystorePass="123456"

truststoreFile="E:/tomcatkey.jks" truststorePass="123456">

如果是tomcat6.0,则 protocol为HTTP/1.1

其中,clientAuth 表示客户认证,由于双向认证一般在 B2B 中,这里只需要服务器认证即可。

keystoreFile 表示证书地址(相对地址或绝对地址皆可),keystorePass 与之前设置的密码一致。

2. web.xml

在<web-app>标签内末尾:

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

3. 启动tomcat,在浏览器中输入https://ip:8443,此时浏览器会提示不安全的连接,直接进入地址栏会出现证书错误的提示,点击错误区域按照提示安装证书。

或者 Inernet选项-内容-证书-受信任的根证书颁发机构-导入,选中之前的cacert.cer和tomcatcert.cer,就oK了

移动设备访问安装页面

在ios设备的safiri中输入页面地址,点击安装连接时会提示 无法连接到xxx.xxx.xxx.xxx,那是因为safiri没有安装证书信任此连接,所以要先安装证书,才能正常。

在浏览器中输入cacert.cer的地址(一开始我用了tomcatcert.cer导致没法用),设备会自动跳转到安装步骤,按照步骤完成安装就可以了,注意最后证书上要有绿色的信任标记才表明安装成功,如果是红色叉号表面安装失败。

安装成功后就可以使用无线安装app了。

PS. 浏览器下安装证书

在macos系统下,使用tomcatcert.cer文件,并将信任设置设置为:总是信任,操作步骤:双击cer文件,在钥匙串访问中,双击此证书会弹出一个详情框,展开信任标签,有一项是"使用此证书时"的combobox选项,展开并选中"总是信任",然后在重启浏览器就OK。

在win7下,使用cacert.cer文件,使用证书导入或者直接点击安装,最后需要确认是否已经安装上去。操作步骤:internet选项 -> 内容 -> 证书 -> 查看证书是否存在即可。最后重启浏览器就OK。

最后提供一个windows下的批处理文件,一键生成证书:

keytool参数 参考 http://deanandbai-gmail-com.iteye.com/blog/1538749
@echo off
echo -----------------------------------
echo 1. 生成根证书...
openssl genrsa -out cakey.pem 1024
openssl req -new -out careq.csr -key cakey.pem -config openssl.cnf -subj /C=CN/ST=JiangSu/L=NanJing/O=Zyx/CN=your ip
openssl x509 -req -in careq.csr -out cacert.pem -signkey cakey.pem -days 3650

echo -----------------------------------
echo 2. 证书申请...
keytool -genkey -alias tomcat_server -keyalg RSA -keysize 1024 -validity "1825" -keypass 123456 -keystore tomcatkey.jks -storepass 123456 -dname C=CN,ST=JiangSu,L=NanJing,O=Zyx,CN=your ip
keytool -certreq -alias tomcat_server -sigalg "MD5withRSA" -file certreq.cer -keypass 123456 -keystore tomcatkey.jks -storepass 123456

echo -----------------------------------
echo 3. 证书导入...
openssl ca -keyfile cakey.pem -cert cacert.pem -in certreq.cer -out tomcatcert.pem -config openssl.cnf -policy policy_anything
openssl x509 -in cacert.pem -out cacert.cer
keytool -keystore tomcatkey.jks -import -alias RootCA -file cacert.cer -storepass 123456
openssl x509 -in tomcatcert.pem -out tomcatcert.cer
keytool -keystore tomcatkey.jks -import -alias tomcat_server -file tomcatcert.cer -storepass 123456
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: