网站https配置攻略(Apache篇)

日期:2015年11月18日 作者: 分类:运维 浏览:4185

本站采用 Nginx 做为本站的web服务软件,关于Nginx的配置参考《网站https配置攻略(Nginx篇)》

关于Apache下https的配置,来源于帮朋友配置服务器时的实践过程,网站效果见 https://webshao.com

什么是https

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司(Netscape)进行,并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通讯方法。

现在它被广泛用于万维网上安全敏感的通讯,例如网银交易支付方面。现在国内大型网站开启https的有百度和淘宝。

网站https攻略(Nginx篇)

HTTPS和HTTP的区别主要为以下四点:

一、https协议需要到ca申请证书,一般免费证书很少,需要交费。(本站证书使用沃通证书免费版,申请地址:https://buy.wosign.com

二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。

三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

Apache中安装配置证书

关于Apache的配置此处不做说明,可以参考本站另一篇博文《CentOS 6部署安装LAMP》.

通过上面的地址申请证书并下载后,使用 For Apache 的配置文件。

首先服务器上要安装mod_ssl扩展

yum install mod_ssl

安装完成后,在/etc/httpd/conf.d目录下会生成一个ssl.conf文件,主要的配置就在这里面了,内容如下

# 加载ssl模块,必须
LoadModule ssl_module modules/mod_ssl.so
Listen 443  # https的端口
SSLPassPhraseDialog  builtin
SSLSessionCache         shmcb:/var/cache/mod_ssl/scache(512000)
SSLSessionCacheTimeout  300
SSLMutex default
SSLRandomSeed startup file:/dev/urandom  256
SSLRandomSeed connect builtin
SSLCryptoDevice builtin

# 需要开启https的域名为 webshao.com
# 此处就声明一个 VirtualHost
NameVirtualHost webshao.com:443
<VirtualHost webshao.com:443>
    ErrorLog logs/ssl_error_log
    TransferLog logs/ssl_access_log
    LogLevel warn
    SSLEngine on
    SSLProtocol all -SSLv2
    SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES

    # 如下配置中的文件为沃通证书给的 For Apache 中的相关证书文件
    SSLCertificateFile conf.d/https/webshao.com/2_webshao.com.crt
    SSLCACertificateFile conf.d/https/webshao.com/1_root_bundle.crt
    SSLCertificateKeyFile conf.d/https/webshao.com/3_webshao.com.key

    ## 增加的内容 start
    ServerName webshao.com
    DocumentRoot /path/to/web/root/dir  # 此处目录为网站根目录
    <Directory /path/to/web/root/dir>
        Options Indexes FollowSymLinks
        AllowOverride All 
        Order allow,deny
        Allow from all
    </Directory>
    ## 增加的内容 end

    <Files ~ "\.(cgi|shtml|phtml|php3?)$">
        SSLOptions +StdEnvVars
    </Files>
    <Directory "/var/www/cgi-bin">
        SSLOptions +StdEnvVars
    </Directory>
    SetEnvIf User-Agent ".*MSIE.*" \
             nokeepalive ssl-unclean-shutdown \
             downgrade-1.0 force-response-1.0
    CustomLog logs/ssl_request_log \
              "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

关于域名的301跳转

要将 http://www.webshao.com 和 http://webshao.com 做301跳转到 https://webshao.com

因为要用到Apache的rewrite功能,所以要确保已经开启rewrite功能,修改/etc/httpd/conf/httpd.conf

# 找到如下项目,将前面的#去掉就行
LoadModule rewrite_module modules/mod_rewrite.so

为了方便管理VirtualHost,我在/etc/httpd/conf.d目录下新建000.host.conf文件,在里面添加如下跳转代码

NameVirtualHost *:80 # 如果此条设置过,此处就可以不设置
<VirtualHost *:80>
    ServerName www.webshao.com
    ServerAlias webshao.com
    RedirectMatch permanent ^/(.*) https://webshao.com/$1 
</VirtualHost>

重启Apache即完成网站的https设置

标签:, ,

除非注明,戊辰人博客文章均为原创,转载请以链接形式标明本文地址

本文地址:https://wanglu.info/2015/11/1081.html