码迷,mamicode.com
首页 > Web开发 > 详细

rails+apache2+passenger+ssl实现https双向认证通信

时间:2014-11-25 23:41:06      阅读:322      评论:0      收藏:0      [点我收藏+]

标签:centos   rails   https   ssl   passenger   

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 []:lykperson@163.com                                  //邮箱
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):椭圆曲线密码编

rails+apache2+passenger+ssl实现https双向认证通信

标签:centos   rails   https   ssl   passenger   

原文地址:http://blog.csdn.net/li_yong_kuan/article/details/41490607

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!