在Apache服务器上安装ssl证书,开启https服务

​ 网络上有很多申请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]