前言
1、标题与某位大牛写的文章保持一致,有致敬和借鉴成分。
2、我不是大牛,对各位有参考意义最好,若有错误,请评论说明,不胜感激。
3、当你看到别人博客并实现之并自己写出相应文章,才算了解。不然只是自欺欺人。
4、我回过头看我写的这篇博客 还是很乱 可能具体原理还不是很透彻 但是至少是自己一步一步实验成功的
说明
1、http走的是80端口,而https走的是443端口,且https使用的是RSA非对称128位加密。
2、https比http更安全,安全在哪?http://zhanzhang.baidu.com/wiki/383 (一篇值得一看的文章)也可以不断的百度知乎达到自己理解为止
3、本文使用的是apache2.2.11,为啥特别强调这个版本。这个版本自带mod_ssl.so模块。之前为了使用2.2.23百度无数,没有解决问题,后来某篇博客提到使用2.2.11自带的版本
4、下载链接(若下载链接失效 评论索要)
链接: https://pan.baidu.com/s/1nXF2Px2ZP1b6jT9T0gpFCg 密码: 5u33 apache
链接: https://pan.baidu.com/s/13LTm_OAFknooCrh-4MdvTw 密码: cge6 openssl
一 openssl签证书
下载链接里面的openssl 当你使用的时候会出现很多错误,因为即使这个是windows版本的,但是里面很多盘符也要修订。基本可以靠自己解决,错误看看稍微想想 改下配置文件就行了。这里一笔带过。
一、生成根证书
生成根证书所用密钥
不需要设置环境变量 只需要cd命令进入openssl.exe所在文件夹即可
openssl genrsa -des3 -out ca.key 1024
去除CA密钥口令
openssl rsa -in ca.key -out ca.key 代表这个证书在被应用程序启动时不需要显示的提示用户输入口令
生成CA即ROOT CA证书自签
openssl req -new -x509 -key ca.key -out ca.crt -config openssl.cnf
//Common Name-要安装这台证书的主机名
hosts文件配置
localhost helloworld
xxx.xxx.xx.xxx helloworld
IE 导入上面生成的ROOT证书
二、生成web服务器端证书
生成web服务器端证书密钥
openssl genrsa -des3 -out server.key 1024
去除CA密钥口令
openssl rsa -in server.key -out server.key
生成web服务器端证书签名请求
openssl req -new -key server.key -out server.csr
用Root CA去对Web服务器的证书请求即csr(certificate request)进行签名认证
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf
请用比较工具 比较改变项 然后添加对应项即可 要有灵性!!不能生搬硬套
三、为Apache HttpServer布署https协议
下载地址 链接: https://pan.baidu.com/s/1bZTtxQBNbZtAI0tUV8MXWg 密码: smmy
四、为Tomcat也布署https协议
Web的信任域就是你的IE里的内容里的证书里的“根级信任域”,App Server的信任域是打不开也不能访问这块地方的,而且App Server的信任域格式也不是crt文件,而是.jks(javakey store的简称)。
生成Tomcat的SSL证书
怎么生成证书?回顾一下上文:
1) 生成KEY
2) 生成证书请求
3) 用CA签名
生成JKS密钥对,密码使用6个a,alias代表“别名”,CN代表Common Name,必须与主机名完全一致我的主机名是helloworld
keytool -genkey -alias helloworldX509 -keyalg RSA -keysize 1024 -dname "CN=helloworld, OU=insurance-dart, O=Cognizant, L=SH, S=SH, C=CN" -keypass aaaaaa -keystore helloworld.jks -storepass aaaaaa
生成JSK的CSR
keytool -certreq -alias helloworldX509 -sigalg "MD5withRSA" -file helloworld.csr -keypass aaaaaa -keystore helloworld.jks -storepass aaaaaa
使用openssl结合ca.crt与ca.key为jsk的csr来签名认证并产生jks格式的crt
openssl x509 -req -in helloworld.csr -out helloworld.crt -CA ca.crt -CAkey ca.key -days 3650 -CAcreateserial -sha1 -trustout -CA ca.crt -CAkey ca.key -days 3650 -CAserial ca.srl -sha1 -trustout
将Root CA导入jks信任域
keytool -import -alias rootca -trustcacerts -file ca.crt -keystore helloworld.jks -storepass aaaaaa
补信任链
keytool -import -alias helloworldX509 -file helloworld.crt -keystore helloworld.jks -storepass aaaaaa
tomcat server.xml配置加入下面内容
启动 tomcat 启动apache 打开demo地址实验成功
问题解决参考网址:
https://wiki.apache.org/httpd/SSLSessionCache
https://blog.csdn.net/hfsu0419/article/details/7536408