原文链接:http://guodayong.blog.51cto.com/263451/1181059

Openssl是SSL的开源实现(可以免费下载应用程序),是一种安全机密程序,主要用于提高远程登录访问的安全性。也是目前加密算法所使用的工具之一,功能很强大。
       Openssl为网络通信提供安全及数据完整性的一种安全协议,包括了主要的密码算法、常用的密钥和证书封装管理功能(CA)以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用,例如我们将会使用Openssl实现私有CA,并实现证书颁发。

  1. OpenSSL:SSL的开源实现
  2. libcrypto:通用加密库,提供了各种加密函数
  3. libssl:TLS/SSL协议的实现,基于会话的、实现了身份认证、数据机密性和会话完整性的TLS/SSL库
  4. openssl:多用途的命令行工具;能够实现私有证书颁发机构;即在公司内部实现身份的验证;

      SSL:(Secure Socket Layer)安全套接字层,通过一种机制在互联网上提供密钥传输。其主要目标是保证两个应用间通信数据的保密性和可靠性,可在服务器端和用户端同时支持的一种加密算法。目前主流版本SSLV2、SSLV3(常用)。

下面通过此图来了解如何实现SSL功能,在介绍之前,我们来说说SSL提供哪些功能:

  1. 1、数据的机密性:通过对称加密算法实现数据的机密性。
  2. 2、数据的完整性:通过单向加密算法保证数据的完整性。
  3. 3、身份的安全验证:提供数据发送者的身份。

 
解说SSL会话过程:

  1. 注:前提服务器端在本地通过非对称加密算法生成一对密钥,并将公钥信息发送给CA证书颁发机构,CA给服务器端颁发数字证书,并将证书发送至服务器端。
  2. SSL会话建立过程:
  3. 第一步:客户端向服务器端建立连接请求(TCP/IP)
  4. 第二步:当TCP/IP建立完成后,客户端和服务器之间协商使用哪种加密算法,如(TSLv1/SSLv2/SSLv3)。
  5. 第三步:协商完成后,服务器将公钥发送给客户端,客户端接收公钥信息。
  6. 第四步:客户端到CA证书颁发机构下载CA公钥信息,并对服务器端发送的证书做验证。
  7. 第五步:随后,客户端在本地通过对称加密算法生成密钥,然后用服务器端发送的公钥进行对这段密钥进行加密,发送至服务器端,其保证了数据的机密性。
  8. 第六步:服务器用自己的私钥对这段数据进行解密,得到密钥,然后将客户端的请求数据进行加密发送给客户端。
  9. 第七步:客户端接到响应,并用密钥进行机密,得到数据。
  10. 第八步:通信结束后,断开会话通道(TCP/IP)

那如何通过Openssl构建私有CA呢,在配置之前我们来介绍下关于Openssl的基本使用:

  1. OpenSSL:SSL的开源实现
  2. libcrypto:通用加密库,提供了各种加密函数
  3. libssl:TLS/SSL协议的实现,基于会话的、实现了身份认证、数据机密性和会话完整性的TLS/SSL库
  4. openssl:多用途的命令行工具;能够实现私有证书颁发机构;即在公司内部实现身份的验证;
  5. openssl:
  6. genrsa:通过RSA算法,生成密钥(私钥和公钥)
  7. req:申请和生成证书
  8. -new:生成新的证书
  9. -x509:互联网常用的一种标准
  10. -in:证书的位置(签署证书及证书请求常常用到)
  11. -out:证书的存放位置
  12. -days:证书的有效期限

构建基于Openssl创建私有CA,并完成SSL/TLS机密机制:
配置环境:三台虚拟机
172.16.88.1/16)CA证书颁发机构并提供HTTP功能--Linux
测试端(192.168.0.203/24)--Windows xp

Seq1:在CA证书颁发机构,使用Openssl生成一对密钥(私钥和公钥)

  1. # cd /etc/pki/CA
  2. # (umask 077; openssl genrsa -out private/cakey.pem 2048)    ##创建私钥,并将权限改为600

Seq2: 编辑Openssl主配置文件:
# vim /etc/pki/tls/openssl.conf

Seq3:下面就开始为CA自身,签署证书:

  1. # openssl req -new -x509 -key -in private/cakey.pem -out cacert.pem -days 365      ##生成自签证书

Seq4:为CA准备目录及文件

  1. # cd /etc/pki/CA
  2. # mkdir certs  crl  newcerts    ##相关证书存放目录
  3. # touch index.txt         ##相关证书信息
  4. # echo "01" > serial     ##颁发证书的序列

Seq5:配置安装HTTP服务及安装mod_ssl模块提供TLS/SSL功能

  1. # yum install httpd mod_ssl -y
  2. # vim /etc/httpd/httpd.conf #最后一行添加如下内容,并注释DocumentRoot "/var/www/html"行,大约在281行
  3. <VirtualHost 172.16.88.1:80>
  4. DocumentRoot "/www/example.com"
  5. ServerName www.example.com
  6. </VirtualHost>
  7. # service httpd restart  && chkconfig  httpd on
  8. # echo "<h1>Test Hettp Server</h1>" > /var/www/html/index.html #测试页

Seq6:进行简单的测试:


ok!!HTTP服务正常工作。

Seq7:为HTTP服务器端配置密钥并向CA发送证书颁发请求

  1. # mkdir /etc/httpd/ssl
  2. # cd /etc/httpd/ssl
  3. #(umask 077; openssl genrsa -out httpd.key 1024)
  4. # openssl req -new -key -in httpd.key -out httpd.csr -days 3650

Seq8:CA为HTTP服务颁发数字证书:

  1. # cd /etc/httpd/ssl  # openssl ca -in httpd.csr -out httpd.crt -days 3650

Seq9:查看CA的颁发的证书信息:

Seq10:配置SSL的主配置文件(/etc/httpd/conf.d/ssl.conf)

  1. # vim /etc/httpd/conf.d/ssl.conf
  2. 在81行后面添加如下内容:
  3. <VirtualHost 172.16.88.1:443>
  4. DocumentRoot "/www/example.com"
  5. ServerName www.example.com
  6. 然后在114和121行更改下内容:
  7. 114 SSLCertificateFile /etc/httpd/ssl/httpd.crt
  8. 121 SSLCertificateKeyFile /etc/httpd/ssl/httpd.key

Seq11:启动httpd服务,并查看相应的443端口是否属于正常打开状态
# service httpd restart  ##重新读取配置文件

Seq12:将CA的公钥信息下载到windows 客户端并重命名为cacert.crt,并安装此证书然后测试。

然后使用https://www.example.com是否可以正常访问:

如何通过Openssl实现私有CA,并为HTTP服务提供TLS/SLL安全机制的更多相关文章

  1. 使用 OpenSSL 创建私有 CA:3 用户证书

    OpenSSL 创建私有 CA 三部曲:使用 OpenSSL 创建私有 CA:1 根证书使用 OpenSSL 创建私有 CA:2 中间证书使用 OpenSSL 创建私有 CA:3 用户证书 在前文&l ...

  2. 使用 OpenSSL 创建私有 CA:2 中间证书

    OpenSSL 创建私有 CA 三部曲:使用 OpenSSL 创建私有 CA:1 根证书使用 OpenSSL 创建私有 CA:2 中间证书使用 OpenSSL 创建私有 CA:3 用户证书 本文将在前 ...

  3. 使用 OpenSSL 创建私有 CA:1 根证书

    OpenSSL 创建私有 CA 三部曲:使用 OpenSSL 创建私有 CA:1 根证书使用 OpenSSL 创建私有 CA:2 中间证书使用 OpenSSL 创建私有 CA:3 用户证书 OpenS ...

  4. 图解openssl实现私有CA

    原文地址:http://xxrenzhe.blog.51cto.com/4036116/1370114 废话不多说,先上图 说明1:蓝色部分为主要流程,黄色箭头指向具体的操作步骤 什么是openssl ...

  5. Openssl与私有CA搭建

    转自:http://www.tuicool.com/articles/aURnim 随着网络技术的发展.internet的全球化,信息共享程度被进一步提高,各种基于互联网的应用如电子政务.电子商务日益 ...

  6. OpenSSL创建私有CA

    1.编辑/etc/pki/tls/openssl.cnf [ CA_default ] dir             = /etc/pki/CA           # 工作目录certs      ...

  7. 利用openssl自建CA体系

    使用 OpenSSL 创建私有 CA:1 根证书 使用 OpenSSL 创建私有 CA:2 中间证书 使用 OpenSSL 创建私有 CA:3 用户证书 今天跟着上面的三部曲,做了一下openssl的 ...

  8. 搭建私有CA并基于OpenSSL实现双向身份认证

    0x00 前言 互联网上的Web应用由于用户数目广泛,都是采用单向身份认证的,只需要客户端验证服务端的身份.但如果是企业内部的应用对接,客户端数量有限,可能就会要求对客户端也做身份验证,这时就需要一个 ...

  9. ssl协议,openssl,创建私有CA

    SSL是Security Socket Layer:安全的套接字层 他介于HTTP和TCP协议层之间 SSL是Netscape公司开发的,属于个人 TLS是标准委员会制定的 OpenSSL是SSL的开 ...

随机推荐

  1. RPM打包原理、示例、详解及备查( 转)

    RPM(Redhat Package Manager)是用于Redhat.CentOS.Fedora等Linux 分发版(distribution)的常见的软件包管理器.因为它允许分发已编译的软件,所 ...

  2. solr简介、学习详细过程!(超详细~)

    solr是什么呢? 一.Solr它是一种开放源码的.基于 Lucene Java 的搜索服务器,易于加入到 Web 应用程序中. 二.Solr 提供了层面搜索(就是统计).命中醒目显示并且支持多种输出 ...

  3. git diff 分支1 分支2 --stat命令没有将所有的不同显示出来

    昨天遇到使用git diff 分支1 分支2  --stat命令时打印的文件修改列表,并不全,导致找了一下午的问题没有找到...特此记录,显示不全的原因我还没有找到,特此记录.

  4. devexpress 如何读demo源码 总结

    对于初学这个庞大的控件集合的程序猿来讲应该是有些难度的.今天就devexpress  demo 里边一些东西就本人的所学做一下引导吧. dev 有个帮助文件 DevExpress 中文帮助文档 和每个 ...

  5. devexpress之barManager 使用

    这次我不想使用ribboncontrol 控件 作为窗口菜单栏,也不想用传统的那种字体的方式 标题栏 一.Bars 1.   把BarManager组件添加到窗体中后,会自动创建两个空的 bars: ...

  6. Java 内存模型、GC原理及算法

    Java 内存模型.GC原理:https://blog.csdn.net/ithomer/article/details/6252552 GC算法:https://www.cnblogs.com/sm ...

  7. JTable 查询

    public JTable query(String table) throws SQLException { DefaultTableModel tablemodel = new DefaultTa ...

  8. Git和SourceTree入门教程

    转自CSDN:http://blog.csdn.net/collonn/article/details/39259227 -->本教程适用于主流的开源网站github和bitbucket,个人认 ...

  9. VMware Workstation 15 pro keys

    永久激活密钥UG5J2-0ME12-M89WY-NPWXX-WQH88 GA590-86Y05-4806Y-X4PEE-ZV8E0 YA18K-0WY8P-H85DY-L4NZG-X7RAD UA5D ...

  10. Photoshop零基础教程集锦,助你快速进阶为大佬,轻松、任性!!!

    现今,对于Web或App UI设计师而言,除了不断学习专业知识,提升设计技能.掌握一款得心应手的设计工具(例如设计师们常用的图像处理工具PhotoShop,矢量图绘制工具AI, 图形视频处理工具AE, ...