参考网站:
配置Apache建立openssl证书实现SSL访问:http://blog.51yip.com/apachenginx/958.html
用ca工具生成证书的方法:http://hi.baidu.com/ireon/item/afef823e69f647ffde2221f3 (wget http://www.openssl.org/contrib/ssl.ca-0.1.tar.gz

概念:
1.crt、cer、key、der、pem分别是什么格式证书文件

证书文件的扩展名只是一种使用习惯上的区别。在apache下,习惯用crt作为证书文件扩展名,在IIS等一些平台下,则习惯用cer作为证书文件的扩展名。Key则通常是私钥文件的扩展名。而pem则是包括crt、cer、key、der等文件,或者将多个文件粘贴到一块的统称。

2.首先在安装之前要明白一些基本概念
1、SSL所使用的证书可以是自己建的生成的,也可以通过一个商业性CA如Verisign 或 Thawte签署证书。
2、证书的概念:首先要有一个根证书,然后用根证书来签发服务器证书和客户证书,一般理解:服务器证书和客户证书是平级关系。在SSL必须安装根证书和服务器证书来认证。
因此:在此环境中,至少必须有三个证书:即根证书,服务器证书,客户端证书
在生成证书之前,一般会有一个私钥,同时用私钥生成证书请求,再利用证书服务器的根证来签发证书。
3、签发证书的问题:用openssl自带的一个CA.sh来签证书./CA.sh -sign

收费:Versign
免费:CACert   StartSSL

原理:

SSL位于HTTP层和TCP层之间,建立用户与服务器之间的加密通信,确保所传递信息的安全性。
SSL是工作在公共密钥和私人密钥基础上的,任何用户都可以获得公共密钥来加密数据,但解密
数据必须要通过相应的私人密钥。使用SSL安全机制时,首先客户端与服务器建立连接,服务器
把它的数字证书与公共密钥一并发送给客户端,客户端随机生成会话密钥,用从服务器得到的公
共密钥对会话密钥进行加密,并把会话密钥在网络上传递给服务器,而会话密钥只有在服务器端
用私人密钥才能解密,这样,客户端和服务器端就建立了一个惟一的安全通道。

 

  1.在SSL中会使用密钥交换算法交换密钥;使用密钥对数据进行加密;使用散列算法对数据的完整性进行验证,使用数字证书证明自己的身份。

SSL协议的三个特性
① 保密:在握手协议中定义了会话密钥后,所有的消息都被加密。
② 鉴别:可选的客户端认证,和强制的服务器端认证。
③ 完整性:传送的消息包括消息完整性检查(使用MAC)。

相关术语:

证书签名请求CSR:

数字签名:就是一个加密的文本块,用CA私钥加密hash值,用于验证证书(或数据)的真实性。

所谓数字签名就是一个加密的文本块(text block),用于验证一个证书或者其他文件(的真实性)。
1.CA建立一个证书的过程是对嵌入在证书签名请求(CSR)中的公钥计算出一个 hash 值,
2.然后用它的私钥进行加密,这个加密的 hash 值(摘要)就是数字签名。这样一来,只有该 CA的公钥才能解开前面的签名,
3.然后对证书中的公钥计算出一个 hash 值,
4.再和解密后得到的原始 hash 值比较,如果两者相等,就证明证书的真实性

SSL握手会话原理:

使用:

一、申请一个免费的密钥和证书(以备后续mod_ssl使用):
  StartSSL申请教程:http://www.shuzizhengshu.com/html/2014/hydt_0102/21.html
      申请完后,得到xxx.key密钥和xxx.crt证书。

二、安装openssl:yum install openssl
  解密xxx.key文件:openssl rsa -in ssl.key -out ssl_decrypt.key
     openssl生成服务器公钥、密钥、证书等方法参考百度文库:http://t.cn/8sEsVGe

三、安装mod_ssl:yum install mod_ssl

1. 將 ssl_decrypt.key 上傳到 /etc/pki/tls/private/
將 ssl.crt 上傳到 /etc/pki/tls/certs/
將 sub.class1.server.ca.pem 以及 ca.pem 上傳到 /etc/pki/tls/

2. 前面提到我們取得的私鑰 ssl.key 是加密過後的
如果沒有解密的話,每次 Apache 啟動後都要輸入密碼
解密步驟如下:
#cd /etc/pki/tls/private/
#openssl rsa -in ssl.key -out ssl_decrypt.key
接下來會提示你輸入私鑰密碼,輸入完就解密囉

3. 再來打開 /etc/httpd/conf.d/ssl.conf
將 ssl.conf 內各項憑證的路徑及檔案修改如下
SSLCertificateFile /etc/pki/tls/certs/ssl.crt
SSLCertificateKeyFile /etc/pki/tls/private/ssl_decrypt.key
SSLCertificateChainFile /etc/pki/tls/sub.class1.server.ca.pem
SSLCACertificateFile /etc/pki/tls/ca.pem

4. 儲存後重新載入 Apache,SSL 就生效囉

(参考:http://blog.mowd.tw/index.php?pl=950)

四、apache配置

1.vi /etc/httpd/conf/httpd.conf
   NameVirtualHost *:443
   (不改此配置会提示:_default_ VirtualHost overlap on port 443, the first has precedence)

2.修改对应网站的虚拟主机:

 <VirtualHost *:>
ServerAdmin pklim101@.com
DocumentRoot /mnt/www/p
DirectoryIndex index.php index.htm index.html
ServerAlias p.ccboys.com
SSLCertificateFile /etc/httpd/conf/ssl.key/ccboysp.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/pub.key
ErrorDocument /.htm
SSLCertificateChainFile /etc/httpd/conf/ssl.key/sub.class1.server.ca.pem
SSLCACertificateFile /etc/httpd/conf/ssl.key/ca.pem
ErrorLog logs/p.ccboys.com-error_log
CustomLog logs/p.ccboys.com-access_log common
</VirtualHost>

五、

颁发受信任证书和不受信任证书:(参考:http://www.linuxidc.com/Linux/2011-11/47478.htm)

1、自行颁发不受浏览器信任的SSL证书:
  HTTPS的SSL证书可以自行颁发,Linux下的颁发步骤如下:

openssl genrsa -des3 -out api.bz.key
openssl req -new -key api.bz.key -out api.bz.csr
openssl rsa -in api.bz.key -out api.bz_nopass.key

2、受浏览器信任的StartSSL免费SSL证书:
  跟VeriSign一样,StartSSL(网址:http://www.startssl.com,公司名:StartCom)也是
一家CA机构,它的根证书很久之前就被一些具有开源背景的浏览器支持(Firefox浏览器、谷歌Chrome浏览器、苹果
Safari浏览器等)。
  在今年9月份,StartSSL竟然搞定了微软:微软在升级补丁中,更新了通过Windows根证书认证程序
(Windows Root Certificate Program)的厂商清单,并首次将StartCom公司列入了该认证清单,
这是微软首次将提供免费数字验证技术的厂商加入根证书认证列表中。现在,在 Windows 7或安装了升级补丁的
Windows Vista或Windows XP操作系统中,系统会完全信任由StartCom这类免费数字认证机构认证的数字证书,
从而使StartSSL也得到了IE浏览器的支持。

centos+apache+mod_ssl的更多相关文章

  1. 阿里云服务器 ECS 部署lamp:centos+apache+mysql+php安装配置方法 (centos7)

    阿里云服务器 ECS 部署lamp:centos+apache+mysql+php安装配置方法 (centos7) 1.效果图 1 2. 部署步骤 1 1. mysql安装附加(centos7) 7 ...

  2. 腾讯云CentOS Apache开启HTTPS

    1.申请SSL证书 https://console.qcloud.com/ssl?utm_source=yingyongbao&utm_medium=ssl&utm_campaign= ...

  3. CentOS+Apache+mod_wsgi+Python+Django

    前言 网上有关的教程千篇一律,都是无脑抄,自己都不验证一遍就直接复制,毫无意义,我通过官方文档和自己摸索,总结了一套教程. Django自带Web服务功能,但那只是方便开发调试,生产环境中一般将Dja ...

  4. centos apache安装和设置

    分类: LINUX 安装方式:yum install httpdyum install mysql-serveryum install phpyum install php-mysql 一.WEB服务 ...

  5. centos apache 隐藏和伪装 版本信息

    1.隐藏Apache版本信息 测试默认 apache 的状态信息[root@1314it conf]# curl -Is localhostHTTP/1.1 200 OKDate: Tue, 16 N ...

  6. CentOS+Apache+php无法访问redis的解决方法

    PHP 使用 Redis 安装 开始在 PHP 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 PHP redis 驱动,且你的机器上能正常使用 PHP. 接下来让我们安装 PH ...

  7. CentOS Apache服务器安装与配置

    原文地址:http://www.linuxidc.com/Linux/2014-01/95256.htm 一.安装Apache程序,一般有三种安装方式: Apache在centos下httpd1.直接 ...

  8. CentOS Apache配置详解

    要想在linux上实现网页服务器(www)需要Apache这个服务器软件,不过Apache仅能提供最基本的静态网站数据而已,想要实现动态网站的话,最好还是要PHP与MySQL的支持,所以下面我们将会以 ...

  9. lanmp安装一(centos+apache+nginx+mysql+php=lanmp地址下载)

    背景 centos7 官网地址https://www.centos.org/download/ 下载选择DVD版进入(也就是标准版,系统齐全) 点击任何一个国家的下载链接 下载地址  http://m ...

随机推荐

  1. php安装编译时 configure: error: Cannot find OpenSSL's <evp.h>

    =============================================== yum install error: protected multilib versions error ...

  2. hdu 4858 水题

    题意:我们建造了一个大项目!这个项目有n个节点,用很多边连接起来,并且这个项目是连通的!两个节点间可能有多条边,不过一条边的两端必然是不同的节点.每个节点都有一个能量值.现在我们要编写一个项目管理软件 ...

  3. 浙江省队选拔 ZJOI2015 (Round 1) 解题报告

    最近莫名其妙地喜欢上了用这种格式写各省省选的全套题解= = 今年浙江省选的出题人是算法竞赛界传说级人物陈立杰,看样子他的出题风格很有特点……ABC三题难度是严格递减的,感觉如果在做第一题的时候被卡住的 ...

  4. python开发_xml.etree.ElementTree_XML文件操作_该模块在操作XML数据是存在安全隐患_慎用

    xml.etree.ElementTree模块实现了一个简单而有效的用户解析和创建XML数据的API. 在python3.3版本中,该模块进行了一些修改: xml.etree.cElementTree ...

  5. wikioi 1017 乘积最大

    dp[i][j]=max(dp[i][j],dp[t][k-1]*mapn[t+1][i]); dp[i][j]代表从0-i之间有j个乘号,mapn[i][j]表示第i位到第j位的数究竟是多少 #in ...

  6. ROS知识(14)----局部避障的动态窗口算法(DWA)及其调试的方法

    Dynamic Window Approach(DWA)是重要的局部轨迹规划算法,ROS中使用了DWA算法获得了很好的局部路径规划的效果.具体的教程可参考官方的导航调试资料Navigation Tun ...

  7. How to check Ubuntu version

    Below you can find some tips on how to check Ubuntu version you are currently running. The first pla ...

  8. 重写Html.DropDownList和Html.DropDownListFor的name属性

    □ 重写前 通常这样写: @Html.DropDownListFor(m => m.DelFlag,(List<SelectListItem>)ViewBag.d,"==请 ...

  9. Delphi 跨平台 Socket 通讯库

    Delphi 跨平台 Socket 通讯库 免费开源的Delphi 跨平台 Socket 通讯库. 源码URL:https://github.com/winddriver/Delphi-Cross-S ...

  10. selenium3+python自动化50-环境搭建(firefox)

    前言 有不少小伙伴在安装selenium环境后启动firefox报错,因为现在selenium升级到3.0了,跟2.0的版本还有有一点区别的. 安装环境过程中主要会遇到三个坑: 1.'geckodri ...