在Apache服务器上安装ssl证书,开启https服务
2016-10-06
4 min read
网络上有很多申请SSL证书的网站,有收费的、有免费的,这里为了学习就以沃通免费证书为例,部署方式大同小异,本文的重点在于部署证书到服务器上。
1、申请证书
-
申请地址:http://www.wosign.com/DVSSL/DV_KuaiSSL_Free.htm
-
申请方式:填写资料,这个难不倒你们吧,这里不再详述。
2、部署到Apache服务器
-
解压 解压压缩包里的for Apache文件夹。
-
上传到服务器 用SSH登录的方式,把for Apache文件夹里的三个文件上传到Linux服务器。路径为 /usr/local/apache/conf/ssl 。
-
开启httpd的SSL功能
修改httpd.conf文件,将下边一行的注释去掉。(默认不用修改)
LoadModule ssl_module modules/mod_ssl.so
- 编辑主机文件vhosts.conf 不同主机不同文件,我这边是vhosts.conf文件。
添加443端口的主机,在VirtualHost代码块里添加SSL的配置,路径是上次的三个文件的路径
<VirtualHost *:443>
DocumentRoot "/data/wwwroot/www"
ServerName www.wugenglong.com
ServerAlias wugenglong.com
SSLEngine on
SSLCertificateFile "/usr/local/apache/conf/ssl/2_www.wugenglong.com.crt"
SSLCertificateKeyFile "/usr/local/apache/conf/ssl/3_www.wugenglong.com.key"
SSLCertificateChainFile "/usr/local/apache/conf/ssl/1_root_bundle.crt"
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
<Directory "/data/wwwroot/www">
SetOutputFilter DEFLATE
Options FollowSymLinks ExecCGI
Require all granted
AllowOverride All
Order allow,deny
Allow from all
DirectoryIndex index.html index.php
</Directory>
</VirtualHost>
完整的配置文件如下
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/www"
ServerName www.wugenglong.com
ServerAlias wugenglong.com
<Directory "/data/wwwroot/www">
SetOutputFilter DEFLATE
Options FollowSymLinks ExecCGI
Require all granted
AllowOverride All
Order allow,deny
Allow from all
DirectoryIndex index.html index.php
</Directory>
</VirtualHost>
<VirtualHost *:443>
DocumentRoot "/data/wwwroot/www"
ServerName www.wugenglong.com
ServerAlias wugenglong.com
SSLEngine on
SSLCertificateFile "/usr/local/apache/conf/ssl/2_www.wugenglong.com.crt"
SSLCertificateKeyFile "/usr/local/apache/conf/ssl/3_www.wugenglong.com.key"
SSLCertificateChainFile "/usr/local/apache/conf/ssl/1_root_bundle.crt"
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
<Directory "/data/wwwroot/www">
SetOutputFilter DEFLATE
Options FollowSymLinks ExecCGI
Require all granted
AllowOverride All
Order allow,deny
Allow from all
DirectoryIndex index.html index.php
</Directory>
</VirtualHost>
重启httpd即可
service httpd restart
重启成功但访问失败,请检查防火墙是否放行443端口,或者在上边的配置文件中的头部加上Listen 443。
###将80端口重定向到443端口,两个方法
第一种方法:在网站根目录新建.htaccess文件
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
//将不带www的域名重定向到www域名
RewriteCond %{HTTP_HOST} ^wugenglong.com$ [NC]
RewriteRule ^(.*)?$ https://www.%{SERVER_NAME}$1 [L,R]
//将非443端口重定向到443
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)?$ https://%{SERVER_NAME}$1 [L,R]
</IfModule>
第二种方法:在vhosts.conf配置文件里的80端口VirtualHost代码块里添加下列代码
RewriteEngine On
//将不带www的域名重定向到www域名
RewriteCond %{HTTP_HOST} ^wugenglong.com$ [NC]
RewriteRule ^(.*)?$ https://www.%{SERVER_NAME}$1 [L,R]
//将非443端口重定向到443
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)?$ https://%{SERVER_NAME}$1 [L,R]