CentOS+Apache使用免费SSL证书实现https网站

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

以下为centos6.4下配置使用流程

1. 环境,httpd等配置略

yum 安装openssl和openssl-devel,httpd-devel

sudo yum install openssl

sudo yum install openssl-devel

sudo yum install httpd-devel

 

为apache安装配置mod_ssl和mod_wsgi

sudo yum -y install mod_ssl

sudo yum -y install mod_wsgi

(注意,通过以上方式,yum会自动配置好并引用mod_ssl的相关conf,无需在http.conf文件之中另外引用)

 

 

2. 使用xdtianyu童鞋编写的脚本(网址https://github.com/xdtianyu/scripts/blob/master/lets-encrypt/README-CN.md)自动生成Let's Encrypt(https://letsencrypt.org)的免费SSL证书:

sudo wget https://raw.githubusercontent.com/xdtianyu/scripts/master/lets-encrypt/letsencrypt.conf
sudo wget https://raw.githubusercontent.com/xdtianyu/scripts/master/lets-encrypt/letsencrypt.sh
sudo chmod +x letsencrypt.sh

 

修改letsencrypt.conf配置文件

ACCOUNT_KEY="letsencrypt-account.key"
DOMAIN_KEY="example.com.key"
DOMAIN_DIR="/var/www/example.com"
DOMAINS="DNS:example.com,DNS:whatever.example.com"
#ECC=TRUE
#LIGHTTPD=TRUE

 

 

将其中的example.com改为你的域名,将DIR之中的目录改为你的首页所在目录,确保此时可以通过example.com正常访问到你的网站(因为之后生成证书的时候需要通过域名访问你的网站,如果无法访问,证书会报错)

然后生成证书:

sudo ./letsencrypt.sh letsencrypt.conf

会生成一堆文件,其中要用到的是:

example.chained.crt
example.com.key

 

3. 修改http.conf

找到“

添加NameVirtualHost *:443

添加如下的段:


DocumentRoot “/path/to/html/example.com"
Servername https://example.com/
SSLEngine on
SSLCertificateFile /path/to/cert/example.chained.crt
SSLCertificateKeyFile /path/to/cert/example.com.key

 

重启apache:

sudo service httpd restart

 

此时可以通过https://example.com访问网站,并且地址栏左边会出现绿色小锁头,表示ssl证书已经配置成功。

 

4. 配置跳转

如果需要输入http://example.com之后自动跳转到https://example.com

要在/path/to/html/example.com目录下,添加.htaccess文件,在其中添加如下内容:

RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

 

此时访问http://example.com即可自动跳转到https://example.com

 

5.定期更新Let's Encrypt的免费ssl证书:

设置一个cron命令每月执行第二步之中的生成证书命令:

0 0 1 * * /path/to/letsencrypt.sh /path/to/letsencrypt.conf >> /var/log/lets-encrypt.log 2>&1

(上述命令会在/path/to/目录下生产全部的ssl证书文件)

再加一条apache的reload指令,让ssl证书生效

0 0 1 * * service httpd reload

 

6.安全起见,在httpd.conf里加一条禁止通过ip访问的规则


ServerName xx.xx.xx.x

        Order Allow,Deny
        Deny from all

 

 

7. 最后注意一点,let's encrypt目前还不支持通配符ssl证书,只支持单域名证书,例如你申请了www.hello.com的证书,那么该证书对info.hello.com是无效的,需要另申请一个info.hello.com的ssl证书

转载于:https://my.oschina.net/u/150705/blog/1585968

你可能感兴趣的:(CentOS+Apache使用免费SSL证书实现https网站)