基本概念:
HTTP: 是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准,用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
谷歌、火狐等浏览器厂商也已经扛起HTTPS大旗,对于HTTP站点会提示不安全警告。而且像谷歌、百度等搜索引擎也早已相应HTTPS号召,都声称对HTTPS站点页面友好甚至优先抓取,排名靠前,当然具体实际实施情况就另当别论了。
要让互联网站点都升级到HTTPS协议还需一段时间,但不可否认HTTPS是大势所趋。已过一番折腾,终于将站点升级到https访问。
下图是在部署https之前使用HTTP协议访问效果:
网站环境:
操作系统:centos6.5 x64
web服务:Apache 2.4+
免费证书商家:Let's Encrypt SSL
操作流程:
1.安装证书
我使用的是Let's Encrypt SSL免费证书,有效期3个月,需要定期更新。(更多国内外免费SSL证书推荐参考)
安装SSL证书我使用的是certbot工具,操作十分简单方便。
下载certbot,并设置权限:
wget https://dl.eff.org/certbot-auto chmod a+x certbot-auto
使用certbot申请安装证书:
./certbot-auto certonly --webroot --apache -w /data/wwwroot/www.chanzhicms.com -d www.chanzhicms.com
-w后面是网站的根目录路径,-d后面是申请证书的域名,多个域名的话,在后面继续添加设置多个-d即可。
申请成功后,可以查看到SSL证书的有效截止日期。申请的证书默认存放在 /etc/letsencrypt 目录下。
2.修改Apache配置文件
设置apache的配置文件 /usr/local/apache/conf/httpd.conf,要修改两个地方,找到下面两行将其前面的#去掉即可。
LoadModule ssl_module modules/mod_ssl.so Include conf/extra/httpd-ssl.conf 然后修改/usr/local/apache/conf/extra/httpd-ssl.conf 文件,将里面内容清空,放入下面内容: Listen 443 AddType application/x-x509-ca-cert .crt AddType application/x-pkcs7-crl .crl SSLCipherSuite EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5 SSLProxyCipherSuite EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5 SSLHonorCipherOrder on SSLProtocol all -SSLv2 -SSLv3 SSLProxyProtocol all -SSLv2 -SSLv3 SSLPassPhraseDialog builtin SSLSessionCache "shmcb:/usr/local/apache/logs/ssl_scache(512000)" SSLSessionCacheTimeout 300 Mutex sysvsem default SSLStrictSNIVHostCheck on
最后修改网站的单独配置文件,/usr/local/apache/conf/vhost/www.chanzhicm.com.conf ,原本只有80端口配置,这里需要我们加上443端口的配置:
ServerAdmin admin@linuxeye.com DocumentRoot "/data/wwwroot/www.chanzhicms.com" ServerName www.chanzhicms.com ServerAlias chanzhicms.com ErrorLog "/data/wwwlogs/www.chanzhicms.com_error_apache.log" CustomLog "/data/wwwlogs/www.chanzhicms.com_apache.log" combined SetOutputFilter DEFLATE Options FollowSymLinks ExecCGI Require all granted AllowOverride All Order allow,deny Allow from all DirectoryIndex index.html index.phpListen 443 DocumentRoot "/data/wwwroot/www.chanzhicms.com" ServerName www.chanzhicms.com:443 ServerAlias www.chanzhicms.com ErrorLog "/data/wwwlogs/www.chanzhicms.com_error_apache.log" ServerAdmin admin@linuxeye.com SSLEngine on SSLCertificateFile /etc/letsencrypt/live/www.chanzhicms.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/www.chanzhicms.com/privkey.pem SetOutputFilter DEFLATE Options FollowSymLinks AllowOverride All Order allow,deny Allow from all DirectoryIndex index.html index.php Require all granted
上面配置中的网站名称、网站路径、证书路径等信息,大家根据自己的具体情况填写。
注意:
这里必须要特别强调一点,因为我的Apache版本是2.4+的,在Directory中,一定要加上一条 Require all granted ,否侧会出现网站HTTP访问正常,但https访问提示 403 forbidden。这条命令是apache2.4新增加的,用以替代allow,deny以及order指令。
最后,重启Apache!重启Apache!重启Apache!
使用https访问网站,查看是否生效。如下图:
小结:
网站升级https其实并不复杂,只是一些细节问题上可能会因环境而异,所以不要盲目地仿照他人操作流程,一定要先看服务器环境。其次,因为https使用443端口,所以服务器防火墙要放开443端口访问,我用的阿里云服务器,还会涉及到安全策略设置,所以在操作时,注意检查端口是否监听。
如果大家在部署https访问网站时遇到其他问题,欢迎留言反馈,我们共同学习交流。
相关推荐
Let's Encrypt官网一键式免费申请ssl证书脚本, 使用方法是放到linux环境下, 给出执行权限rwx即可 chmod -R 700 certbot-auto , 之后./certbot-auto执行, 过程中会让你选择apache(1)还是nginx(2), 之后还会让你输入...
Let's Encrypt是国外一个公共的免费SSL项目,由 Linux 基金会托管,由Mozilla、思科、Akamai、IdenTrust和EFF等组织发起,靠谱! 3、Let's Encrypt安装部署简单、方便,目前Cpanel、Oneinstack等面板都已经集成了...
Let's Encrypt 证书申请 SSL证书 SSL 详细说明如何申请Let's Encrypt证书
Let’s Encrypt免费SSL证书获取以及自动续签,配合Nginx实测有效
NULL 博文链接:https://happysoul.iteye.com/blog/2390688
NULL 博文链接:https://happysoul.iteye.com/blog/2390306
实战申请Let's Encrypt永久免费SSL证书过程教程及常见问题 Let's Encrypt免费SSL证书的出现,也会对传统提供付费SSL证书服务的商家有不小的打击。到目前为止,Let's Encrypt获得IdenTrust交叉签名,这就是说可以应用...
Let's Encrypt是可以签发免费SSL/TLS证书的CA机构,它是为普及HTTPS而发起的,推动了基础DV SSL证书的普及。其证书已经被Mozilla、Google、Microsoft和Apple等主流浏览器支持,只需要web服务器配置好HTTPS证书,...
Let's Encrypt作为一个公共且免费SSL的项目逐渐被广大用户传播和使用,是由Mozilla、Cisco、Akamai、IdenTrust、EFF等组织人员发起,主要的目的也是为了推进网站从HTTP向HTTPS过度的进程,目前已经有越来越多的商家...
简单来说acme.sh 实现了 acme 协议, 可以从 let‘s encrypt 生成免费的证书。 acme.sh 有以下特点: 一个纯粹用Shell(Unix shell)语言编写的ACME协议客户端。 完整的ACME协议实施。 支持ACME v1和ACME v2 支持...
一个DES加密系统的实现。程序本身运行速度比较慢,不过结构还是比较清晰的,可以用于帮助对DES的学习
介绍了使用letsencrypt 申请多种 https 免费证书的不同方法,其中用 dns 的方式申请通配符的证书比较省事,在有公网映射,内外网80和443端口映射不一致的环境下推荐使用。
Let's Encrypt是国外一个公共的免费SSL项目,由 Linux 基金会托管,由Mozilla、思科、Akamai、IdenTrust和EFF等组织发起。 Let's Encrypt证书有效期三个月,每三个月需要续签证书。 Let's Encrypt注册主域名认证频率...
LetsProxy - 快速获取 Let's Encrypt证书并提供反向代理
Let's Encrypt免费SSL证书自动获取和部署工具,放在这里主要是为方便下载,因为官方的下载链接通常很难很难正常下载。以后有新的版本出来同样跟进发布上来。
Let's Encrypt是国外一个公共的免费SSL项目,由 Linux 基金会托管,由Mozilla、思科、Akamai、IdenTrust和EFF等组织发起,靠谱! Let's Encrypt安装部署简单、方便,目前Cpanel、Oneinstack等面板都已经集成了Let's...
Let's Encrypt 给网站加 HTTPS 完全指南certbot - cstopery1
如果网站部署了免费的Let’s Encrypt证书时,第一次https打开此网站时会显得很慢,往往需要等待四五秒才能正常打开,这是由于特殊原因,ocsp.int-x3.letsencrypt.org服务器IP无法正常被解析。 为了提升网站访问体验...
Certify The Web 是一款专业好用的IIS的免费 ssl证书管理器 ,由Let's Encrypt提供支持,又叫Certify SSL Manager,能帮助广大站长全自动从letsencrypt.org轻松申请、安装并自动续订IIS/Windows服务器的免费SSL/TLS...