Apache下部署ssl协议的步骤介绍

https(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的 http 通道,简单讲是 http 的安全版。即 http 下加入 ssl 层,https 的安全基础是 ssl,因此加密的详细内容就需要 ssl。
个人网站用 ssl 证书,国外这几年开始比较流行起来,尤其是 Google 对使用了 ssl 证书的网站收录良好,越来越多的网站开始使用 https 访问了。但是国内的一众搜索引擎对 ssl 就不那么友好了,而且使用 ssl 后会拖慢网站浏览速度。
不管怎样,安全性越来越受到重视总归不是一件坏事。
那么在 Apache 里配置 ssl 是怎样的,我们一步一步来。

一、使用 OpenSSL 生成证书请求
生成 rsa 私钥(2048位)

openssl genrsa -out teddysun.pem 2048

Generating RSA private key, 2048 bit long modulus
.........................+++
................................................................+++
e is 65537 (0x10001)
生成 csr 证书请求

openssl req -new -key teddysun.pem -out teddysun.csr

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN  // 国家代码
State or Province Name (full name) []:Shanghai  // 省
Locality Name (eg, city) [Default City]:Shanghai  // 城市
Organization Name (eg, company) [Default Company Ltd]:Teddysun // 组织或公司名
Organizational Unit Name (eg, section) []:  // 不填
Common Name (eg, your name or your server's hostname) []:*.teddysun.com // 此处演示是通配符域名,一般带 www 前缀即可
Email Address []:admin@teddysun.com  // 邮箱地址

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:  // 不填
An optional company name []:  // 不填
查看生成完毕的文件

ll *.pem *.csr

-rw-r--r-- 1 root root 1058 Jan 22 14:30 teddysun.csr
-rw-r--r-- 1 root root 1675 Jan 22 14:25 teddysun.pem
将上述 2 个文件下载到本地,用记事本打开 teddysun.csr,里面的完整内容就是证书请求了。

二、签发证书

如果需要默认受信任的证书,则需要花钱购买了。比如
https://www.namecheap.com/security/ssl-certificates/comodo/positivessl.aspx
只需 9 美元/年。
利用第一步生成的 csr 文件,即可申请证书,过程略,网上有一堆图文教程。

另外,证书可以自签,但是使用的时候需要安装根证书,否则便不受信任。
下面说说自签名证书步骤

生成根证书 rsa 私钥(2048位)

openssl genrsa -out ca.pem 2048

Generating RSA private key, 2048 bit long modulus
...............................................+++
.........+++
e is 65537 (0x10001)
利用私钥创建根证书

openssl req -new -x509 -days 3650 -key ca.pem -out ca.crt

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Shanghai
Locality Name (eg, city) [Default City]:Shanghai
Organization Name (eg, company) [Default Company Ltd]:Teddysun
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:teddysun.com Root CA
Email Address []:admin@teddysun.com
至此,有效期为 3650 天的根证书 ca.crt 就创建完毕了。
查看生成完毕的文件

ll *.pem *.csr *.crt

-rw-r--r-- 1 root root 1411 Jan 22 15:14 ca.crt
-rw-r--r-- 1 root root 1679 Jan 22 14:48 ca.pem
-rw-r--r-- 1 root root 1041 Jan 22 14:40 teddysun.csr
-rw-r--r-- 1 root root 1675 Jan 22 14:25 teddysun.pem
利用根证书签发 ssl 证书

openssl ca -in teddysun.csr -out teddysun.crt -cert ca.crt -keyfile ca.pem
这一步出错了,错误信息如下

Using configuration from /etc/pki/tls/openssl.cnf
/etc/pki/CA/index.txt: No such file or directory
unable to open '/etc/pki/CA/index.txt'
140292081481544:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen('/etc/pki/CA/index.txt','r')
140292081481544:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:400:
提示缺少文件,那我们就生成一个空文件

touch /etc/pki/CA/index.txt
继续执行

openssl ca -in teddysun.csr -out teddysun.crt -cert ca.crt -keyfile ca.pem
又出错了,错误信息如下

Using configuration from /etc/pki/tls/openssl.cnf
/etc/pki/CA/serial: No such file or directory
error while loading serial number
140375536244552:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen('/etc/pki/CA/serial','r')
140375536244552:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:400:
还是缺少文件,这里生成一个内容为 01 的文件

echo '01' > /etc/pki/CA/serial
再次执行

openssl ca -in teddysun.csr -out teddysun.crt -cert ca.crt -keyfile ca.pem

Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 1 (0x1)
        Validity
            Not Before: Jan 22 07:35:14 2015 GMT
            Not After : Jan 22 07:35:14 2016 GMT
        Subject:
            countryName               = CN
            stateOrProvinceName       = Shanghai
            organizationName          = Teddysun
            commonName                = *.teddysun.com
            emailAddress              = admin@teddysun.com
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Comment:
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier:
                E8:7F:9E:BE:12:25:22:48:A2:49:AE:D5:CB:A6:7B:24:EE:A6:E2:5B
            X509v3 Authority Key Identifier:
                keyid:C7:0C:EF:F2:73:8C:CB:01:7A:8F:9C:30:A7:80:37:FA:E7:B6:88:02

Certificate is to be certified until Jan 22 07:35:14 2016 GMT (365 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
至此,就签发了一个默认有效期为 365 天的通配符域名 *.teddysun.com 的 ssl 证书了。
如果想签发更长有效期的证书,比如 730 天的,则命令如下:

openssl ca -in teddysun.csr -out teddysun2.crt -days 730 -cert ca.crt -keyfile ca.pem
最长不能超过根证书的有效期。

查看最终生成完毕的文件

ll *.pem *.csr *.crt

-rw-r--r-- 1 root root 1411 Jan 22 15:14 ca.crt
-rw-r--r-- 1 root root 1679 Jan 22 14:48 ca.pem
-rw-r--r-- 1 root root 4594 Jan 22 15:35 teddysun.crt
-rw-r--r-- 1 root root 1041 Jan 22 14:40 teddysun.csr
-rw-r--r-- 1 root root 1675 Jan 22 14:25 teddysun.pem
分别解释一下这 5 个文件。
ca.crt 是签发完成的根证书文件
ca.pem 是根证书的私钥文件
teddysun.crt 是签发完成的域名证书文件
teddysun.csr 是证书请求文件
teddysun.pem 是签发域名的私钥

如果要使用自签名的证书,需要在本机导入根证书,步骤如下:
点击“安装证书”,下一步,将所有的证书放入下列存储,浏览,选择“收信任的根证书颁发机构”,下一步,完成。

 

安装好根证书后,再打开后,就是这个样子的:

 

 

自签名证书则是这个样子的:

 

 

 

三、在 Apache 下部署 ssl 证书

 

首先需要合并一下证书文件,用记事本打开 ca.crt 文件,全选,复制,再用记事本打开 teddysun.crt ,在其内容的最后,回车,粘贴 ca.crt 的全部内容,保存。
当然,如果是在 namecheap 申请到的证书,发到你邮箱的时候都都打包好了,证书也合并好了,直接使用即可。

 

在安装完 LAMP 环境后,默认是没有加载 https 配置的,这里需要修改一下配置文件 /usr/local/apache/conf/httpd.conf ,找到下面的
#Include conf/extra/httpd-ssl.conf ,将前面的 # 去掉,保存。
将合并后的证书 teddysun.crt 和私钥 teddysun.pem 复制到 /usr/local/apache/conf/ 下。
再修改配置文件 /usr/local/apache/conf/extra/httpd-ssl.conf ,sample 内容如下:

# port
Listen 443
#   SSL Cipher Suite:
#   List the ciphers that the client is permitted to negotiate.
#   See the mod_ssl documentation for a complete list.
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5

SSLPassPhraseDialog  builtin

SSLSessionCache        "shmcb:/usr/local/apache/logs/ssl_scache(512000)"
SSLSessionCacheTimeout  300

##
## SSL Virtual Host Context
##

<VirtualHost *:443>
DocumentRoot /data/www/default
ServerName teddysun.com
ServerAlias www.teddysun.com
ErrorLog "/usr/local/apache/logs/lamp_error_log"
TransferLog "/usr/local/apache/logs/lamp_access_log"

SSLEngine on

SSLCertificateFile /usr/local/apache/conf/teddysun.crt
SSLCertificateKeyFile /usr/local/apache/conf/teddysun.pem
#SSLCertificateChainFile /usr/local/apache/conf/alphassl.pem
#SSLCACertificateFile /usr/local/apache/conf/root.pem

CustomLog "/usr/local/apache/logs/lamp_ssl_request_log"
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b "%{Referer}i" "%{User-Agent}i""

BrowserMatch "MSIE [2-5]"
nokeepalive ssl-unclean-shutdown
downgrade-1.0 force-response-1.0

</VirtualHost>

上述配置都修改完毕后,注意防火墙要放行 443 端口。查看防火墙状态:

/etc/init.d/iptables status

然后再重启 Apache ,命令:

/etc/init.d/httpd restart
好了,现在就可以愉快地用 https 访问网站了。

时间: 2024-10-02 18:39:38

Apache下部署ssl协议的步骤介绍的相关文章

Apache下服务器虚拟主机设置方法介绍

一.WWW服务器虚拟主机原理 WWW服务器虚拟主机是指使用一台物理机器,充当多个主机名的WWW服务器.比如由一台机器同时提供http://www.company1.com, http://www.company2.com 等的WWW服务,而浏览这些WWW站点的用户感觉不到这种方式下跟由不同的机器提供不同的服务有什么差别. 使用WWW虚拟主机的好处在于,一些小规模的网站,通过跟其他网站共享同一台物理机器,可以减少系统的运行成本,并且可以减少管理的难度.另外,对于个人用户,也可以使用这种虚拟主机方式

Windows+Apache下安装SSL证书的方法

一.Apache安装SSL证书需要三个配置文件:  (温馨提示:安装证书前请先备份您需要修改的服务器配置文件) 1_root_bundle.crt. 2_domainname.com.crt.3_ domainname.com.key.  注:这三个证书文件都在文件夹for Apache.zip中,   例:1_root_bundle.crt是根证书链,2_domainname.com.crt为公钥,3_ domainname.com.key为私钥.       (其中:证书公钥.私钥文件一般以

Ubuntu下安装搭建MySQL环境步骤介绍

一. 安装 MySQL sudo apt-get install mysql-server sudo apt-get install mysql-client sudo apt-get install php5-mysql // 安装php5-mysql是将php和mysql连接起来 二. 检查MySQL是否正在运行 sudo netstat -tap | grep mysql 当运行成功后,可以看到类似于如下的界面: image_1apg9c7o13rq6a0ne2n2d5qf9.png-5k

CentOS6.2系统环境下部署LAMP环境步骤

最近买了创宇云的云服务器,准备拿来这折腾一下,用来学习centOS的相关知识,这里就记录一下centOS下部署lamp环境的步骤. 本机环境:CentOS6.2 32位 一般来说,在centOS下安装环境有两种方式,第一种是使用yum命令自动安装软件,第二种是下载源码包自己进行编译安装,这里主要介绍的是使用yum命令进行安装 1.安装apache 使用命令 yum install httpd,然后根据提示,最好输入Y同意安装即可. 安装完成后,使用 /ect/init.d/httpd start

Apache下服务器虚拟主机的设置方法介绍

一.WWW服务器虚拟主机原理 WWW服务器虚拟主机是指使用一台物理机器,充当多个主机名的WWW服务器.比如由一台机器同时提供http://www.company1.com, http://www.company2.com 等的WWW服务,而浏览这些WWW站点的用户感觉不到这种方式下跟由不同的机器提供不同的服务有什么差别. 使用WWW虚拟主机的好处在于,一些小规模的网站,通过跟其他网站共享同一台物理机器,可以减少系统的运行成本,并且可以减少管理的难度.另外,对于个人用户,也可以使用这种虚拟主机方式

windows下安装apache并配置ssl

  步骤1:配置 APACHE以支持SSL 找到下面两行去掉前面的注释 # LoadModule ssl_module modules/mod_ssl.so Include conf/extra/httpd-ssl.conf 步骤2: 为网站服务器生成证书及私钥文件 C:Program FilesApache Software FoundationApache2.2bin>openssl genrsa -out server.key 1024 生成一个server.key 步骤3:生成签署申请

StartSSL 免费证书申请步骤以及Tomcat和Apache下的安装

StartSSL 免费证书申请步骤 1.客户端认证申请 StartSSL用户认证使用的是Https客户端证书认证而非用户名/密码认证.因此第一步是申请StartSSL客户端证书. (整个申请过程可参考链接:http://jeeker.net/article/apply-ssl-certificat-for-domain-from-startssl/)   1)  填写申请单,首页-sign up free .注意邮箱必须真实,电话,地址等看上去像私人的而非公司的,必须使用英文填写. 2)  到邮

服务器已部署SSL开启https协议为什么浏览器仍然提示不安全?

客户反馈服务器已部署SSL,全站开启了https协议访问了,为什么浏览器仍然提示不安全?是证书无效吗? 万维景盛工程师检查发现,客户网站虽然已经可以使用https访问了,但网站上仍然还有http协议的js,css,jpg或iframe的资源,因此导致浏览器不出现绿色安全锁. 为了让浏览器完全显示https安全锁,那么需要我们在部署https协议后,对整站进行清理,包括静态页面的http全路径.javascript静态资源.css样式单.iframe等资源调用的协议. 将这些资源的引用都改为htt

开发微信小程序中SSL协议的申请、证书绑定、TLS 版本处理等

在上篇随笔<基于微信小程序的系统开发准备工作>介绍了开发微信小程序的一些前期的架构设计.技术路线 .工具准备等方面内容,本篇随笔继续这个步骤,逐步介绍我们实际开发过程中对SSL协议的申请及后期处理过程,包括证书的IIS端口绑定,以及解决""小程序要求的 TLS 版本必须大于等于 1" 的问题. 1.证书申请及成功的后续处理 小程序的配置要求我们必须在网站提供443端口服务,需要加入HTTPS证书,这种证书可以从云服务商上购买,如腾讯云.阿里云上的云服务器后台都提供