rails+apache2+passenger+ssl实现https双向认证通信
环境:
系统:Centos7
服务器:apache(httpd) 2.4.6
制作工具:openssl 1.0.1
Rails版本 :4.1.6
准备工作:
安装apache和openssl
#yum install httpd httpd-devel httpd-tools
#yum install openssl
安张mod_ssl
#yum install mod_ssl
一、创建根证书
1创建CA私钥
#openssl genrsa -out ca.key 1024
2创建CA签名请求(根据要求填写信息,密码那个选项不要填写,直接回车就行了,不然在后面服务器启动的时候,每次启动都要输入密码,比较麻烦)
#openssl req -new -key ca.key -out ca.csr
(
下面贴出来的是要填写的信息,根据提示填写就行了
Country Name (2 letter code) [GB]:CN //输入国家名称
State or Province Name (full name) [Berkshire]:AnHui //省名
Locality Name (eg, city) [Newbury]:BoZhou //城市
Organization Name (eg, company) [My Company Ltd]:xuewb.com //组织名称
Organizational Unit Name (eg, section) []:xuewb.com //单位名称
Common Name (eg, your name or your server‘s hostname) []: *.xuewb.com //根据具体情况填写,不要写错
Email Address []:[email protected] //邮箱
Please enter the following ‘extra‘ attributes
to be sent with your certificate request
A challenge password []: //密码,可以不写,写的话,每次用到的时候要输入
An optional company name []: //可以不写
)
3自己签发CA根证书
#openssl x509 -req -days 365 -signkey ca.key -in ca.csr -out ca.crt
二、签发服务器端证书
1创建服务器私钥
#openssl genrsa -out server.key 1024
2创建服务端证书签发请求
#openssl req -new -key server.key -out server.csr
3利用上面一步骤创建的CA根证书,签发服务器证书
openssl x509 -req -days 365 -CA ca.crt -CAkey ca.key -CAserial ca.srl -CAcreateserial -in server.csr -out server.crt
三、签发客户端认证
1创建客户端私钥
#openssl genrsa -out client.key 1024
2创建客户端证书签发请求
#openssl req -new -key client.key -out client.csr
3利用CA根证书,签发客户端证书
#openssl x509 -req -days 3650 -CA ca.crt -CAkey ca.key -CAcreateserial -in client.csr -out client.crt
4把客户端证书转换成p12格式(作用是此格式可以导入到浏览器的你的证书,这一选项)
#openssl pkcs12 -export -clcerts -inkey client.key -in client.crt -out client.p12
=============================
备注:用下面命令可以查看相应的文件的内容
1 查看私钥信息
#openssl rsa -noout -text -in ca.key
2查看生成的签名请求文件
#openssl req -noout -text -in ca.csr
3查看CA根证书
#openssl x509 -noout -text -in ca.crt
=============================
四、把上面步骤制作的根证书、服务器证书、客户端证书导入到浏览器中
(1)我使用的火狐浏览器,
导入这些证书:
编辑---->首选项---->高级---->证书---->查看证书-->服务器---->导入
然后把上面步骤创建的CA根证书(ca.crt)和服务器证书(server.crt)导入进来
(2)导入客户端证书:
编辑---->首选项---->高级---->证书---->查看证书-->您的证书---->导入
要注意的是这一步导入的不是client.crt文件,而是经过转换的client.p12文件
五、配置apache2服务器(httpd)
配置文件rails_ssl.conf如下(这个文件是完整的,不过不要把安装mod_ssl后生成的ssl.conf文件去除,不用动它就行了,里面有一些基础配置,如果你想动的话,把一些基础配置放到这个配置文件下也可以):
#===================================================================
#备注:
DocumentRoot /var/www/html/xuewb/public
这行中的xuewb是我建的rails的项目名称
SSLCertificateFile /etc/httpd/cfb_crt/cfb/server.crt
这行中/etc/httpd/cfb_crt/cfb/server.crt是我存放上面步骤制作好的文件的路径,我把制作好的所需要的文件复制到
/etc/httpd/cfb_crt/cfb这个目录下了,你配置的时候修改成你自己存放文件的地方就行了,不过要有访问权限
#====================================================================
六、修改hosts文件,使s.crowdroid.com 这个域名映射到本地服务器
vim /etc/hosts
127.0.0.1 s.xuewb.com
保存退出(wq!)
七、重新启动httpd
#sudo service httpd restart
八、把SElinux先关掉,否则没有访问受到限制
#sudo setenforce 0
#===================================================
备注:
查看状态:#getenforce
(如果为permissive模式,说明已经关闭;如果为enforcing模式,表示没有关闭的状态,用这种方式实现的关闭是暂时的,下次重启服务器会再次启动,如果想永久关闭,可以使用root用户,vim /etc/sysconfig/selinux,将SELINUX=enforcing修改成SELINUX=disabled 重启后才能生效)
#===================================================
九、访问https://s.xuewb.com
参考资料:
http://httpd.apache.org/docs/2.4/en/ssl/
http://kyfxbl.iteye.com/blog/1910891
http://blog.chinaunix.net/uid-20553497-id-2239318.html
#=========简单解读============
对称加密算法
对称加密算法用来对敏感数据等信息进行加密,常用的算法包括:
DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。
3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。
AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高;
非对称算法
常见的非对称加密算法如下:
RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的;
DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准);
ECC(Elliptic Curves Cryptography):椭圆曲线密码编
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。