keytool -genkeypair -keyalg RSA -alias tomcat -keystore tomcat.keystore
注意在被提示输入名字(CN)的时候要输入ip或者域名,“127.0.0.1”或者“localhost”,后面浏览器访问的时候,也只能用此时输入的ip或者域名才能正常访问,
其他被提示输入的东西随便输
keytool -export -alias tomcat -keystore tomcat.keystore -file xxx.cer
上面生成cer文件,在windows下双击打开,
然后点击安装证书——》下一步——》将证书放入下列存储——》受信任的根证书颁发机构——》确定-》下一步——》完成
受信任的根证书颁发机构这个选项,好像必须是这个,其他的选项,导入后也无法被信任。
然后IE 和 chrome中就可以正常https访问了
firefox好像中无法把这个文件导入为根证书颁发机构,只能导入为服务器,但是导入之后是无效的(可能是ip或域名无法和证书关联)
不过,firefox可以用另一种方法保存证书:
证书管理器——》添加例外——》输入网址——》获取证书——》(成功后,下面会显示一坨信息)——》确认安全例外
a.生成服务器keystore
keytool -genkeypair -keyalg RSA -alias tomcat -keystore tomcat.keystore
b.用上一步的keystore生成csr文件
keytool -certreq -alias tomcat -keystore tomcat.keystore -file certreq.csr
c生成CA根证书
openssl req -new -x509 -keyout ca.key -out ca.crt
路径和文件初始化:
mkdir demoCA
cd demoCA
mkdir newcerts
touch index.txt
echo 1234 >serial
签名:
openssl ca -in certreq.csr -out certreq.crt -cert ca.crt -keyfile ca.key
e.把证书链文件ca.crt和证书回复certreq.crt导入a中生成的keystore文件中
keytool -import -alias root -keystore tomcat.keystore -trustcacerts -file ca.crt
keytool -import -alias tomcat -keystore tomcat.keystore -file certreq.crt
是否信任此证书? [否]: y
证书已添加到密钥库中
第二句会提示:
证书回复已安装在密钥库中
f.tomcat配置文件
和1中是一样的
g.浏览器或者操作系统导入根证书ca.crt
ie,chrome基本和1中是一样的
firefox,可以直接在根证书选项中导入
可能遇到的问题:
1.找不到 openssl.cnf
只要把 参数中 -config openssl.cnf 这项去掉就可以了
去掉后,openssl会用自己默认的openssl.cnf文件
我的系统是/usr/lib/ssl/openssl.cnf
2.待签名的服务器信息和CA的信息不相符
The countryName field needed to be the same in the
CA certificate (cn) and the request (Unknown)
解决方法:
方法一:重新生成相关文件,使相同
方法二:编辑openssl.cnf,修改policy为anything
方法三:好像有个参数-policy anything?
方法四:按照需求改变openssl.cnf中的配置,分别配置对每个字段的要求
另外,即使输入字段相同,也有可能报错,原因可能是编码不同
3.chrome打开网页后会提示:该网站使用的安全设置已过期(原因见参考4)
网页可以正常打开,只是地址栏左侧不是绿色的锁头,而是一个灰色的带警告三角的锁头
解决方法:
ca签名是增加参数-md sha256
openssl ca -in certreq.csr -out server127.crt -cert ca.crt -keyfile ca.key -md sha256
当然你也可以加个-days 100的选项使之在2016年1月1号之前失效
openssl ca -in certreq.csr -out server127.crt -cert ca.crt -keyfile ca.key -days 100
最后,一些没搞明白的:
1.openssl -sha256
2.openssl -newkey rsa:2048
3.openssl -keysize 2048
4.openssl -md sha256
上面这些参数的区别和联系是什么?
结果:
参考:
1.http://www.html580.com/9581(有图片和详细说明,正确性待考)
2.http://blog.94it.net/post/openssl-ca.html
3.http://www.wosign.com/Support/SSLins/tomcat_install.htm
4.http://www.itrus.cn/html/fuwuyuzhichi/1048.html