SSL构建单双向https认证

1.  SSL基本介绍

我们常常在使用网上银行时看到的连接都是以“https”开始的,那么这个https是什么呢?这其实是表示目前连接使用了SSL进加密,能保证客户端到服务器端的通信都在被保护起来,那么浏览器是如果实现的呢?下面让我们来介绍一下SSL基本的实现方法。

首先我们有两种基本的加解密算法类型:对称加密,非对称加密(公私钥加密),现在介绍一下这两种加密算法的特点:

对称加密:密钥只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密算法有DES、AES等,示意图如下:

图1 对称加密

非对称加密:密钥成对出现(且根据公钥无法推知私钥,根据私钥也无法推知公钥),加密解密使用不同密钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称加密速度较慢,典型的非对称加密算法有RSA、DSA等,示意图如下:

图2 非对称加密

2.https加密传输介绍

根据上面的两种加密方法,现在我们就可以设计一种无法让他人在互联网上知道你的通讯信息的加密方法:

1.    在服务器端存在一个公钥及私钥

2.    客户端从服务器取得这个公钥

3.    客户端产生一个随机的密钥

4.    客户端通过公钥对密钥加密(非对称加密)

5.    客户端发送到服务器端

6.    服务器端接受这个密钥并且以后的服务器端和客户端的数据全部通过这个密钥加密(对称加密)

HTTPS通信过程的时序图如下:

图3 HTTPS通信时序图

正如上图所示,我们能保证下面几点:

1.    客户端产生的密钥只有客户端和服务器端能得到

2.    加密的数据只有客户端和服务器端才能得到明文

3.    客户端到服务端的通信是安全的

3.  https的双向认证/单向认证

tomcat 配置https (双向认证)

1、生成服务器端证书

keytool -genkey -keyalg RSA -dname "cn=localhost,ou=sango,o=none,l=china,st=beijing,c=cn" -alias server -keypass password -keystore server.jks -storepass password -validity 3650

2、生成客户端证书

keytool -genkey -keyalg RSA -dname "cn=sango,ou=sango,o=none,l=china,st=beijing,c=cn" -alias custom -storetype PKCS12 -keypass password -keystore custom.p12 -storepass password -validity 3650

客户端的CN可以是任意值。

3、由于是双向SSL认证,服务器必须要信任客户端证书,因此,必须把客户端证书添加为服务器的信任认证。由于不能直接将PKCS12格式的证书库导入,我们必须先把客户端证书导出为一个单独的CER文件,使用如下命令,先把客户端证书导出为一个单独的cer文件:

keytool -export -alias custom -file custom.cer -keystore custom.p12 -storepass password -storetype PKCS12 -rfc

然后,添加客户端证书到服务器中(将已签名数字证书导入密钥库)

keytool -import -v -alias custom -file custom.cer -keystore server.jks -storepass password

4、查看证书内容

keytool -list -v -keystore server.jks -storepass password

5、配置tomcat service.xml文件

maxThreads="150" scheme="https" secure="true"

clientAuth="true" sslProtocol="TLS"

keystoreFile="D:/server.jks" keystorePass="password"

truststoreFile="D:/server.jks" truststorePass="password"

/>

clientAuth="true"表示双向认证 

6、导入客户端证书到浏览器 双向认证需要强制验证客户端证书。双击“custom.p12”即可将证书导入至IE。

tomcat 配置https (单向认证)

1、生成服务器端证书

keytool -genkey -keyalg RSA -dname "cn=localhost,ou=sango,o=none,l=china,st=beijing,c=cn" -alias server -keypass password -keystore server.jks -storepass password -validity 3650

2、由于是单向认证,没有必要生成客户端的证书,直接进入配置tomcat service.xml文件

maxThreads="150" scheme="https" secure="true"

clientAuth="false" sslProtocol="TLS"

keystoreFile="D:/server.jks" keystorePass="password"

/>

clientAuth="false"表示单向认证,同时去掉truststoreFile="D:/server.jks" truststorePass="password"这2

4.  证书的购买

大家可以到北京数字认证中心等CA厂商去采购,下面是深圳市沃通的证书相关情况:

SSL证书续费价格:

3 年: 3134 元,平均下来1年仅1045元,4张共12536元
5 年: 5150 元,平均下来1年仅1030元,4张共20600元

现在1年1688元,续费价格为1350元。续多年的非常划算哦:)

而且不用每年都续费重新安装证书。只要是长期运营的网站,

可以放心使用多年期证书。

这是证书请求文件csr生成指南:沃通

证书安装指南:沃通

 

5.  部署注意事项:

1、确保server.key 、server.crt、ca.crt等文件为root可读权限,加强安全性。操作如下:

chmod 400 文件名

2、执行apachectl startssl命令时,让apache自动输入"pass phrase"运行,操作如下:

编辑文件

(1) vi /*/*/apache/conf/extra/httpd-ssl.conf

注释掉SSLPassPhraseDialog builtin

在下一行添加SSLPassPhraseDialog exec:/*/*/apache/conf/apache_pass.sh

(2) vi /*/*/apache/conf/apache_pass.sh

#!/bin/sh

echo "pass phrase" # "pass phrase" 即为执行apachectl startssl时需要输入的通行短语"

chmod 700 /*/*/apache/conf/apache_pass.sh

(3)然后启动apache

[[email protected] jishubu]#/*/*/apache/bin/apachectl startssl 或者是 /*/*/apache/bin/httpd -k start -DSSL

3、一旦开启了https服务,则防火墙一定要把443端口对外开放。

时间: 2024-10-18 12:44:21

SSL构建单双向https认证的相关文章

Apache SSL单双向证书认证

要求目标用户(系统)安装自己的CA根证书,效果是一样的,还可以省下请权威CA签发证书的费用下面就介绍如何创建自己的CA 1.准备工作 先在/etc/httpd/conf创建子目录: private certificates 其中private放的是私钥和CSR(后面会介绍),certificates里放的就是证书了 2.创建CA私钥 Openssl代码   openssl genrsa -out private/ca.key.pem 2048 通过这个命令,私钥就创建好了,文件名是ca.key.

[转帖]nginx配置ssl加密(单/双向认证、部分https)

nginx配置ssl加密(单/双向认证.部分https) https://segmentfault.com/a/1190000002866627 nginx下配置ssl本来是很简单的,无论是去认证中心买SSL安全证书还是自签署证书,但最近公司OA的一个需求,得以有个机会实际折腾一番.一开始采用的是全站加密,所有访问http:80的请求强制转换(rewrite)到https,后来自动化测试结果说响应速度太慢,https比http慢慢30倍,心想怎么可能,鬼知道他们怎么测的.所以就试了一下部分页面h

Loadrunner对https协议(单双向SSL)的web端性能测试

1.项目背景 1.1 单双向SSL的含义及部署 单向SSL即我们说到的https协议. 特点是,浏览器需要请求验证服务器证书: 基本含义是:一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息.它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版. 双向SSL顾名思义就是双方都需要验证证书的协议,浏览器首先向服务端请求证书,然后服务器端需要向浏览器请求目前登陆用户的个人证书验证. 1.2 系统的基本部署 单向SSL交互过程: 使用单向SSL时,仅通过虚拟主

使用loadrunner对https协议(单双向SSL)的web端性能测试 (转)

1.项目背景 1.1 单双向SSL的含义及部署 单向SSL即我们说到的https协议. 特点是,浏览器需要请求验证服务器证书: 基本含义是:一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息.它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版. 双向SSL顾名思义就是双方都需要验证证书的协议,浏览器首先向服务端请求证书,然后服务器端需要向浏览器请求目前登陆用户的个人证书验证. 1.2 系统的基本部署 单向SSL交互过程: 使用单向SSL时,仅通过虚拟主

【HTTPS双向加密认证】

nginx配置ssl加密(单双向认证.部分https) Posted on 2015-05-28   |   In Linux, Nginx  |   暂无评论 nginx下配置ssl本来是很简单的,无论是去认证中心买SSL安全证书还是自签署证书,但最近公司OA的一个需求,得以有个机会实际折腾一番.一开始采用的是全站加密,所有访问http:80的请求强制转换(rewrite)到https,后来自动化测试结果说响应速度太慢,https比http慢慢30倍,心想怎么可能,鬼知道他们怎么测的.所以就试

【转帖】android平台ssl单双向验证

原文出自:http://blog.csdn.net/hfeng101/article/details/10163627http://blog.csdn.net/hfeng101/article/details/10163627 android平台ssl单双向验证 分类:             JAVA             android开发              2013-08-21 23:51     4672人阅读     评论(16)     收藏     举报 AndroidS

CentOS 7 虚拟机搭建lamp (php-fpm),三者分离,https认证

1.主机规划 配置虚拟机中有至少 3台,操作系统都是centos7 1台httpd服务器(172.18.251.235) 1台php-fpm服务器(172.18.252.132) 1台MySQL服务器(172.18.252.0) 在搭建安装之前,我们首先了解一下它们之间分开工作的模式: 在搭建lamp之前,我们先配置yum源,阿里云,搜狐,163开源镜像网站很多,在这儿我就不一一赘述了. 现在我们就开始利用yum源安装httpd(172.18.251.235) ~]# yum install h

Linux下Apache https认证

参考:http://kyfxbl.iteye.com/blog/1910891 http://showerlee.blog.51cto.com/2047005/1266712 一.环境 httpd:Apache2.4.10 openssl:1.0.1 OS:CentOS5.7 四.在httpd中配置单向HTTPS 1.编辑 httpd.conf,分别查找下面2行代码,并去掉前面的#,(这里的前提是,在编译httpd的时候,已经编译了ssl模块) vim /usr/local/apache/con

好程序员web前端分享如何构建单页Web应用

好程序员web前端分享如何构建单页Web应用,首先我们来看一看单页应用是什么?所谓单页应用,指的是在一个页面上集成多种功能,甚至整个系统就只有一个页面,所有的业务功能都是它的子模块,通过特定的方式挂接到主界面上.它是AJAX技术的进一步升华,把AJAX的无刷新机制发挥到极致,因此能造就与桌面程序媲美的流畅用户体验. 其实单页应用我们并不陌生,很多人写过ExtJS的项目,用它实现的系统,很天然的就已经是单页的了,也有人用jQuery或者其他框架实现过类似的东西.用各种JS框架,甚至不用框架,都是可