有一个需要,客户要求使用https,但是目前只使用java生成的证书即可。之后研究了一下,记录如下。
(1)java工具keytool
位置:%JAVA_HOME%/bin/keytool.exe
常用命令:
创建
keytool -genkey -alias catest -keyalg RSA -keystore d:\catest.key
alias 指定别名
keyalg 加密方式
keystore 仓库位置
之后会要求输入其他几项:
1.创建的仓库密码和密码确认
2.CN(您的名字于姓氏是什么) 域名或IP,本机调试输入127.0.0.1
OU、O等,其中CN为最重要的信息,会影响之后导入的信任cer证书能否正常访问。
3.输入生成的秘钥密码,默认与仓库密码一致,直接输入回车即可。
也可以使用一条语句(未验证)
keytool -genkey -alias yushan -keypass yushan -keyalg RSA -keysize 1024 -validity 365 -keystore e:/yushan.keystore -storepass 123456 -dname "CN=(名字与姓氏), OU=(组织单位名称), O=(组织名称), L=(城市或区域名称), ST=(州或省份名称), C=(单位的两字母国家代码)";
其他参数不详细介绍,大家可以查阅。
删除
keytool -delete -alias catest -keystore d:\catest.key
查看
keytool -list -keystore d:\catest.key
当创建完成后,就可以配置服务器为https了。但是我还要做一个操作,生成cer文件,导入浏览器为信任证书,这样可以正常访问服务器,而没有提示。
导出
keytool -export -alias catest -file d:\catest.cer -keystore d:\catest.key
之后可以看到生成了
catest.cer
文件,之后导入用,keytool的操作就完成了。
更多操作,可以参考http://blog.csdn.net/tony1130/article/details/5134318
(2)tomcat配置
我使用tomcat7,其他版本应该类似。
打开conf/server.xml,复制其中被注释掉的https的配置段,粘贴到注释外面。并添加keystoreFile(仓库文件)和keystorePass(密码)属性,其他配置默认即可,如果需要优化大家可以搜索资料,配置如下
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS"
keystoreFile="d:/catest.key"
keystorePass="catest" />
现在可以启动tomcat,已经可以通过https访问了,例如https://127.0.0.1:8443
之后还有一些操作可以配置。
(3)配置web.xml,令指定的登录请求使用https,其他页面可以使用http
<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>/login.html</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
配置节点介绍请参考
http://252401762.iteye.com/blog/310078
(4)安全证书不受信任
现在访问时,会提示 安全证书不受信任,将之前导出的cer证书导入到浏览器的信任根证书就可以了。
双击证书,安装过程中,有一步为选择证书的安装位置,选择为 受信任的根证书颁发机构 即可。IE下正常,chrome下还是没辙。
(5)weblogic配置
使用生成的秘钥,配置weblogic。当然正式的证书中,公钥、私钥、密码、文件等要复杂一些。不过现在只是简单做实现功能。
weblogic版本10.3,windows环境。linux环境应该类似。
进入weblogic控制台,点击左侧 服务器 ,在右面的列表中选择 AdminServer(就是接受访问的服务器),进入配置页面。
配置页面中,有三个选项卡是之后会用到的,分别是 密钥库(keystore)、SSL和一般信息(general)。
在密钥库中,
密钥库选择 定制标识和定制信任(Custom Identity and Custom Trust)。
下面的两个配置相同即可:
密钥库(keysotre):密钥文件位置(d:\catest.key)
类型(keysotre type):jks
密码(passphrase):设置的密码(catest)
密码确认(passphrase):确认密码(catest)
在SSL配置中:
标识和信任位置(identity and trust location):密钥库(keystore)
秘钥别名(key alias):创建的key别名(catest)
秘钥密码和确认密码:默认创建的是和密钥库密码一样(catest)
在一般配置中:
有一项 已启用的SSL监听端口(SSL Listen Port Enabled),打钩,并记住下面的端口,默认为7002。
配置完成,保存,激活更改,重启应用。
(6)正式CA证书的使用,未完待续。。。
来源:oschina
链接:https://my.oschina.net/u/127182/blog/174395