网站https配置攻略(Apache篇)
本站采用 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和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设置
除非注明,戊辰人博客文章均为原创,转载请以链接形式标明本文地址