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

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文件去除,不用动它就行了,里面有一些基础配置,如果你想动的话,把一些基础配置放到这个配置文件下也可以):


   
   
    
    


	LoadModule passenger_module /usr/local/rvm/gems/ruby-2.0.0-p598@rails416/gems/passenger-4.0.53/buildout/apache2/mod_passenger.so
   	
    
    
     
     
     		PassengerRoot /usr/local/rvm/gems/ruby-2.0.0-p598@rails416/gems/passenger-4.0.53
     		PassengerDefaultRuby /usr/local/rvm/gems/ruby-2.0.0-p598@rails416/wrappers/ruby
      
    
    

      SSLEngine on
	#这两个是配置服务器的认证(服务器验证)
      SSLCertificateFile /etc/httpd/cfb_crt/cfb/server.crt
      SSLCertificateKeyFile /etc/httpd/cfb_crt/cfb/server.key
	#这三个是配置客户端的认证(如果不需要客户端认证就把下面三个注释掉,和上面的结合就实现了双向认证)
      SSLCACertificateFile  /etc/httpd/cfb_crt/cfb/ca.crt
      SSLVerifyClient require
      SSLVerifyDepth 1

      RailsEnv  production
      ErrorLog  /etc/httpd/logs/error_log
      ServerName s.xuewb.com
      DocumentRoot /var/www/html/xuewb/public
      
    
    
     
     
         AllowOverride all
         Options -MultiViews
      
    
    
   
   
   

#===================================================================
#备注:

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):椭圆曲线密码编
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,我可以为您介绍一下OAuth 2.0和OpenID Connect(OIDC)的基本概念和用法。 OAuth 2.0是一种授权框架,用于允许用户授权第三方应用访问其受保护的资源,而无需共享其凭据。它通过授权服务器颁发访问令牌来实现这一目的。OAuth 2.0的授权码流程是其中一种常见的授权方式。 OpenID Connect(OIDC)是在OAuth 2.0的基础上构建的身份验证协议。它允许用户使用他们在认证提***0和OpenID Connect,您可以使用现有的库或框架来简化开发过程。例如,您可以使用Ruby的OmniAuth库来实现与Yahoo! JAPAN的OAuth 2.0和OpenID Connect集成。 以下是使用OmniAuth和omniauth-yahoojp gem进行OAuth 2.0和OpenID Connect集成的基本步骤: 1. 在Gemfile中添加omniauth-yahoojp gem: ```ruby gem 'omniauth-yahoojp' ``` 2. 运行bundle install安装gem依赖项。 3. 在您的应用程序中配置OmniAuth: ```ruby Rails.application.config.middleware.use OmniAuth::Builder do provider :yahoojp, 'YOUR_CLIENT_ID', 'YOUR_CLIENT_SECRET' end ``` 请将YOUR_CLIENT_ID和YOUR_CLIENT_SECRET替换为您在Yahoo! JAPAN开发者门户上创建的应用程序的客户端ID和客户端密钥。 4. 创建一个回调路由来处理授权后的回调: ```ruby get '/auth/yahoojp/callback', to: 'sessions#create' ``` 请将'/auth/yahoojp/callback'替换为您希望处理回调的路径,并将'sessions#create'替换为您的应用程序中实际处理回调的控制器和动作。 5. 在控制器中处理回调: ```ruby class SessionsController < ApplicationController def create auth = request.env['omniauth.auth'] # 在这里处理授权后的逻辑 end end ``` 您可以从auth变量中获取有关用户的信息,例如用户的唯一标识符、姓名和电子邮件地址。 这是一个基本的OAuth 2.0和OpenID Connect集成示例。您可以根据您的应用程序需求进行进一步的定制和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值