部署环境:
centos6,jetty9,jdk1.7
证书为第三方机构提供的认证证书
1.修改etc/jetty-https.xml
<Set name="port"><Property name="https.port" default="443" /></Set>
为
<Set name="port"><Property name="https.port" default="8443" /></Set>
2.修改start.ini
jetty.dump.stop=false
为
jetty.dump.stop=
etc/jetty-ssl.xml
etc/jetty-https.xml
3.重启jetty服务
访问https://localhost 会提示证书不是受信任的,则说明服务启动成功
制作证书:
1.生成keystore文件
keytool -genkey -alias jetty -keyalg RSA -keysize 2048 -keystore mykeystore
比如:
输入keystore密码: 123456
您的名字与姓氏是什么?
[Unknown]: www.baidu.com
您的组织单位名称是什么?
[Unknown]: IT
您的组织名称是什么?
[Unknown]: XXXX
您所在的城市或区域名称是什么?
[Unknown]: Shanghai
您所在的州或省份名称是什么?
[Unknown]: Shanghai
该单位的两字母国家代码是什么
[Unknown]: CN
CN=徐吖禾, OU=天河, O=天河有限公司, L=南京, ST=江苏, C=CN 正确吗?
[否]: y
输入<xahCA>的主密码
(如果和 keystore 密码相同,按回车):
2.生成csr文件
keytool -certreq -alias jetty -keystore mykeystore -file certreq.csr
3.提交证书验证机构,获取中级证书和服务器证书
直接保存为zhongji.cer 和server.cer即可
4.导入中级证书 (与第三方机构确认是那一个类型的https证书,注意别名)
keytool -import -trustcacerts -keystore mykeystore -alias zhongji -file zhongji.cer
5.导入服务器证书
keytool -import -trustcacerts -keystore mykeystore -alias jetty -file server.cer
附:删除证书:keytool -delete -alias tomcat -keystore server.jks
查看证书:keytool -list -v -keystore server.jks
jetty9中
1.把以上的mykeystore文件放入jetty目录的etc目录下
2.修改jetty-ssl.xml文件
<Set name="KeyStorePath"><Property name="jetty.base" default="." />/<Property name="jetty.keystore" default="etc/mykeystore"/></Set>
<Set name="KeyStorePassword"><Property name="jetty.keystore.password" default="OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4"/></Set>
<Set name="KeyManagerPassword">123456</Set>
<Set name="TrustStorePath"><Property name="jetty.base" default="." />/<Property name="jetty.truststore" default="etc/mykeystore"/></Set>
<Set name="TrustStorePassword">123456</Set>
<Set name="EndpointIdentificationAlgorithm"></Set>
把以上内容修改为:
<Set name="KeyStorePath"><Property name="jetty.base" default="." />/<Property name="jetty.keystore" default="etc/keystore"/></Set>
<Set name="KeyStorePassword">123456</Set>
<Set name="KeyManagerPassword"><Property name="jetty.keymanager.password" default="OBF:1u2u1wml1z7s1z7a1wnl1u2g"/></Set>
<Set name="TrustStorePath"><Property name="jetty.base" default="." />/<Property name="jetty.truststore" default="etc/keystore"/></Set>
<Set name="TrustStorePassword"><Property name="jetty.truststore.password" default="OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4"/></Set>
<Set name="EndpointIdentificationAlgorithm"></Set>
密码为创建mykeystore时的密码
3.重启jetty服务器
再次访问jetty,成功
JDK中keytool常用命令
-genkey 在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书
-alias 产生别名
-keystore 指定密钥库的名称(产生的各类信息将不在.keystore文件中
-keyalg 指定密钥的算法
-validity 指定创建的证书有效期多少天
-keysize 指定密钥长度
-storepass 指定密钥库的密码
-keypass 指定别名条目的密码
-dname 指定证书拥有者信息 例如: "CN=sagely,OU=atr,O=szu,L=sz,ST=gd,C=cn"
-list 显示密钥库中的证书信息 keytool -list -v -keystore sage -storepass ....
-v 显示密钥库中的证书详细信息
-export 将别名指定的证书导出到文件 keytool -export -alias caroot -file caroot.crt
-file 参数指定导出到文件的文件名
-delete 删除密钥库中某条目 keytool -delete -alias sage -keystore sage
-keypasswd 修改密钥库中指定条目口令 keytool -keypasswd -alias sage -keypass .... -new .... -storepass ... -keystore sage
-import 将已签名数字证书导入密钥库 keytool -import -alias sage -keystore sagely -file sagely.crt
导入已签名数字证书用keytool -list -v 以后可以明显发现多了认证链长度,并且把整个CA链全部打印出来。
jetty https证书的安装