一、安装Apache支持SSL/TLS

yum install mod_ssl openssl

二、创建证书

证书(Cerificate)的基本作用是将一个公钥和安全个体(个人、公司、组织等)的名字绑定在一起。

一般情况下,制作证书要经过几个步骤,如上图所示。首先用openssl genrsa生成一个私钥,然后用openssl req生成一个签署请求,最后把请求交给CA,CA签署后就成为该CA认证的证书了。如果在第二步请求时加上-x509参数,那么就直接生成一个self-signed的证书,即自己充当CA认证自己。

除了这种方式外,在Debian或者Ubuntu系统中有更加简便的方法制作self-signed证书使用make-ssl-cert命令。该命令在ssl-cert的包里,一般会伴随着Apache的安装而安装,可能单独安装也可以。

如果您只是想做一张测试用的电子证书或不想花钱去找个 CA 签署,您可以造一张自签 (Self-signed) 的电子证书。当然这类电子证书没有任何保证,大部份软件偶到这证书会发出警告,甚至不接收这类证书。 使用自签名(self-signed)的证书,它的主要目的不是防伪,而是使用户和系统之间能够进行SSL通信,保证密码等个人信息传输时的安全。

这里先说下证书相关的几个名词:

RSA私钥能解密用证书公钥加密后的信息。通常以.key为后缀,表示私钥也称作密钥。是需要管理员小心保管,不能泄露的。

CSR(Certificate Signing Request)包含了公钥和名字信息。通常以.csr为后缀,是网站向CA发起认证请求的文件,是中间文件。

证书通常以.crt为后缀,表示证书文件。

CA(Certifying Authority)表示证书权威机构,它的职责是证明公钥属于个人、公司或其他的组织。

由于默认配置文件中证书名为localhost.crt和localhost.key,这里就按两个文件名生成。

步骤1、生成私钥

 cd /etc/pki/tls/private/

 openssl genrsa -des3 -out localhost.key  

注:生成私钥,需要提供一个至少4位的密码

  采用DES3加密新产生的私钥localhost.key文件,每次要使用这个私钥时都要用输入密码。如果您的电子证书是用在apache等服务器中,您每次启动服务器时都要输入密码一次,我们可以在生成证书请求文件后,删除私钥的密码。

 cp localhost.key localhost.key.org
openssl rsa -in localhost.key.org -out localhost.key
 openssl genrsa -out localhost.key  

注:采用128位rsa算法生成密钥localhost.key文件,这种方法产生的证书在apache等服务器中启动服务器时不会要求输入密码,同时也不会把私钥加密。

步骤2: 生成证书请求文件(Certificate Signing Request)

 openssl req -new -key localhost.key -out localhost.csr

注:这是用步骤1的密钥生成证书请求文件localhost.csr, 这一步输入内容和创建自签名证书的内容类似,按要求输入就可以了。

步骤3: 签署生成证书

  • 三方签署

您只要把localhost.csr这个档案给第三方CA(Certificate Authority)机构签署生成证书就可以了。

  • 自签名证书
  •  openssl x509 -req -days  -in localhost.csr -signkey localhost.key -out localhost.crt

三、配置Apache

开启apache 的LoadModule ssl_module modules/mod_ssl.so 模块

开启apache配置文件的 Include conf/extra/httpd-ssl.conf

ssl配置文件在/etc/httpd/conf.d/ssl.conf,默认就行,不需要更改。

这里看下证书及密钥的默认位置

 cat /etc/httpd/conf.d/ssl.conf

 SSLCertificateFile /etc/pki/tls/certs/localhost.crt

 SSLCertificateKeyFile /etc/pki/tls/private/localhost.key


配置虚拟主机

编辑ssl.conf文件,加入证书对应的主机头。

 vi /etc/httpd/conf.d/ssl.conf

 ServerName www.example.com


配置SSL证书

编辑配置文件,修改如下几行:

  • 如果是自签名证书,按如下配置:
  •  vi /etc/httpd/conf.d/ssl.conf
    
     SSLEngine on
    
     SSLCertificateFile /etc/pki/tls/certs/localhost.crt
    
     SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

    注:如果SSLCertificateFile中指定的证书已包含相应私钥,SSLCertificateKeyFile这一行就可以注释掉。

  • 如果是第三方签署的CA证书,按如下配置:
  •  SSLEngine on
    
     SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
    
     SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
    
     SSLCertificateChainFile /etc/ssl/certs/server-ca.crt

各指令含义:

SSLEngine :这个指令用于开启或关闭SSL/TLS协议引擎。

SSLCertificateFile:该指令用于指定服务器持有的X.509证书(PEM编码),其中还可以包含对应的RSA或DSA私钥。如果其中包含的私钥已经使用密语加密,那么在Apache启动的时候将会提示输入密语。

SSLCertificateKeyFile:指定了服务器私钥文件(PEM编码)的位置。如果SSLCertificateFile指定的服务器证书文件中不包含相应的私钥,那么就必须使用该指令,否则就不需要使用。

SSLCertificateChainFile:这个指令指定了一个多合一的CA证书,用于明确的创建服务器的证书链。这个证书链将被与服务器证书一起发送给客户端,由直接签发服务器证书的CA证书开始,按证书链顺序回溯,一直到根CA的证书结束,这一系列的CA证书(PEM格式)就构成了服务器的证书链。这有利于避免在执行客户端认证时多个CA证书之间出现混淆或冲突。

测试Apache HTTPS

  • 重启Apache
  •  /etc/init.d/httpd restart

注:如果有设置的私人密钥的密码,则会要求输入。

Apache/2.2.21 mod_ssl/2.2.21 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide the pass phrases.

Server
www.example.com:443 (RSA)
Enter pass phrase:
OK: Pass Phrase Dialog successful.

  • 使用curl来验证

curl https://localhost/ -k

-k参数的意思是允许不验证访问SSL站点,因为如果要验证,就不能使用localhost做测试,而只能用生成证书时明确指定的域名。

  • 使用浏览器

访问服务器时输入https://域名(或IP),浏览器会弹出安装服务器证明书的窗口。说明服务器已经支持SSL了。

四、其它知识点

在上面SSL站点配置文件中所使用的是”default“(默认虚拟主机),下面说下相关的知识点。

default“(默认虚拟主机)虚拟主机可以捕获所有指向没指定的IP地址和端口的请求。比如:一个没被任何虚拟主机使用的地址/端口对。

仅当没有其他虚拟主机符合客户端请求的IP地址和端口号时,”default“虚拟主机才会捕获这个请求。并且仅当”default“虚拟主机的端口号(默认值由您的Listen指定)与客户端发送请求的目的端口号相符时,这个请求才会被捕获。也可以使用通配符(例如:”default:*”)来捕获任何端口号的请求。

服务器配置示例:

 <VirtualHost _default_:>

 DocumentRoot /www/default

 ......

 </VirtualHost>

这段配置内容的意思是所有访问这个WEB服务器的443端口的请求会被这个默认虚拟主机处理。

另外仅当客户端连接的目的IP地址和端口号没有指定而且不与任何一个虚拟主机(包括”default“虚拟主机)匹配的时候,才会用主服务器来伺服请求。换句话说,主服务器仅捕获没有指定IP地址和端口的请求。

CentOS下配置Apache HTTPS的更多相关文章

  1. CentOS下配置apache+gitweb

    GitWeb支持多个版本库,可以对多个版本库进行目录浏览(包括历史版本),可以查看文件内容,查看提交历史,提供搜索及 RSS feed支持,也可以提供目录文件的打包下载等.可以看https://git ...

  2. centos下配置Apache的https强制跳转

    vim /etc/httpd/conf/httpd.conf 新增如下三行 RewriteEngine on RewriteCond  %{HTTPS} !=on RewriteRule  ^(.*) ...

  3. windows下配置apache+https

    通过https反向代理映射到http地址,可实现以https的方式,访问普通的http网站.主要涉及到以下三个配置文件的修改:httpd.confhttpd-ssl.confhttpd-vhosts. ...

  4. Ubuntu下配置Nginx HTTPS

    HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTTP下加入S ...

  5. windows Apache 环境下配置支持HTTPS的SSL证书

    windows Apache 环境下配置支持HTTPS的SSL证书 1.准备工作 1)在设置Apache + SSL之前, 需要做: 安装Apache, 下载安装Apache时请下载带有SSL版本的A ...

  6. Mac下配置Apache Httpd的Https/SSL

    Mac下配置Apache Httpd的Https/SSL httpd版本: httpd-2.4.17 jdk版本: jdk1.8.0_65 参考来源: Mac下安装Apache Httpd Mac O ...

  7. Centos下配置php环境

    Centos下配置php环境   目录[-] 环境: GD2 2 安装PHP 5.2.14(FastCGI模式) 1)编译安装PHP 5.2.14所需的支持库: 2)编译安装MySQL 5.5.3-m ...

  8. CentOS下安装Apache

    CentOS下安装Apache,首先在用户状态下使用su root命令切换到超级管理员界面,让后开启终端,进行apache的安装过程. [root@localhost centos]# yum ins ...

  9. centos下配置gitosis服务器遇到的困难

    这篇博客主要讲的是在centos下配置gitosis遇到的问题. 背景:centos7.2 64 :gitosis2.0 1.困难1 1)产生的问题及原因.gitosis没有安装成功,没有出现fini ...

随机推荐

  1. LeetCode 59. 螺旋矩阵 II(Spiral Matrix II)

    题目描述 给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵. 示例: 输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7 ...

  2. __doPostBack function

    __doPostBack function Hi everyone. Today I am going to talk about the __doPostBack function, because ...

  3. vue问题一:触发接口

    //在script中先引用 import api from './../../api/index' //vue文件方法中 写 del(index, row) { let self=this; // 传 ...

  4. spring BeanUtils.copyProperties只拷贝不为null的属性

    在MVC的开发模式中经常需要将model与pojo的数据绑定,apache和spring的工具包中都有BeanUtils,使用其中的copyProperties方法可以非常方便的进行这些工作,但在实际 ...

  5. latexdiff中的大坑:字符编码问题

    最近用latex写文章,要用到修订模式,于是采用latexdiff命令生成修订版pdf.这原本是一个非常简单方便的方法,却隐藏着字符编码的问题,初次用可能会遇到意想不到的问题,让人很烦,比如,生成出来 ...

  6. 《FS Book》: 如何让圣诞节邮件营销与众不同

    临近年末,双旦将至,这无疑是一年中最适合进行营销的时候,各大企业都开始进行促销活动,但与此同时,不要忘了问候你的客户,给他们真切的关怀.国内领先的邮件营销服务商Focussend在其最新一期<F ...

  7. 高级测试工程师面试必问面试基础整理——python基础(一)(首发公众号:子安之路)

    现在深圳市场行情,高级测试工程师因为都需要对编程语言有较高的要求,但是大部分又没有python笔试机试题,所以面试必问python基础,这里我整理一下python基本概念,陆续收集到面试中python ...

  8. C# StreamReader与StreamWriter

    原文:https://www.cnblogs.com/kissdodog/archive/2013/01/27/2878667.html StreamReader实现了抽象基类TextReader类, ...

  9. neo4j3.0多数库切换

    动机 类似与关系型数据库,创建了多个数据库 想要像访问关系型数据库那样来可以无缝切换多个数据库 然而,在neo4j 3.0都暂时没有办法做到:每次启动neo4j,它只能读取一个数据库.比如,现在有两个 ...

  10. PTA(Basic Level)1008.数组元素循环右移问题

    一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A1⋯AN−1)变换为(AN−M⋯AN−1A0A1⋯AN−M−1)(最 ...