苹果和小程序开发都开始要求使用https
服务,并且运营商广告注入也愈来愈疯狂。因此,实现网站https
很用必要。html
实现https
就须要一个SSL
证书。证书大部分都很贵,不过也有一些免费的证书服务供我的开发者使用,这是一个大好消息。好比腾讯云,七牛云,阿里云。shell
咱们今天就拿阿里云来实践一下,由于个人服务器也在这里。apache
原文连接:https://weiya.me/item/66.htmlubuntu
首先第一步就是获取一个证书。来到阿里云购买证书页面。传送门:阿里云免费SSL地址小程序
选择以下图的配置。其余的也买不起o(╯□╰)o浏览器
点击当即购买,而后下一步,直接支付就能够了。安全
看下支付成功服务器
以后,去阿里云控制台,选择菜安全(云盾)
->证书服务
,能够找到刚刚的购买好的订单。ide
刚刚买好的订单,证书状态为待完成。须要点击补全连接进行补全。网站
补全信息就是填写一些你的域名信息和你的我的信息,顺带验证下域名是你的。
第一步是填写域名。这里不能写通配符域名,须要写普通域名,就是相似于www.baidu.com
或者images.baidu.com
这种。
因此,当你须要多个二级域名的时候,你须要购买多个免费的SSL
证书。
下一步,填写我的信息。
这里面要注意,红框内的域名验证类型。
DNS:是在域名解析记录里面添加一条记录来证实域名是你的。
文件:是传一个文件到你的域名根目录方式来证实域名是你的。
其中若是选择DNS
的,而且域名在阿里云的能够直接勾选下面的复选框,这样阿里云就会自动帮你填写域名解析记录,全自动。
点击下一步,进入生成CSR
界面,这里为了简单,选择系统生成。点击建立自动建立。
完成上面全部工做后。回到证书订单列表,信息会显示在审核中状态。点击进度能够查看以前步奏是否有问题。
以下状态是成功:
若是点击进度,弹出对话框以下。
注意红色字。说明,系统在域名解析中添加TXT
记录存在冲突。那么说明你的域名中存在同名的CNAME
记录。由于,CNAME
和TXT
同名会冲突。
咱们去域名解析界面看下:
果真,这里存在同名的CNAME
。解决方案:
先删除CNAME,添加TXT记录,等到域名受权验证经过。这时再删除TXT,把CNAME写回来。
先把CNAME改成A记录(由于A记录和TXT不冲突),而后添加TXT。等到审核经过同上。
一切问题都解决了,下面就等签发。
等到签发完成后,咱们直接点击对应域名的下载连接。
跳转到该界面,选择你对应的服务器,下载证书。我这里是apache
下载完成后,文件包内应该有4个文件。
咱们去服务器apache安装的目录建立一个文件夹cert
,在里面再建立一个文件夹admin
(这里为了放多个域名证书,便于管理)。将刚刚下载的4个文件所有传到服务器。
提示: ubuntu
服务器的apache
默认安装目录为/etc/apache2
证书文件传好了以后,咱们须要使用证书。这里是在apache
的配置文件中引用。
首先看一下以前的apache
虚拟主机配置:
<VirtualHost *:80> DocumentRoot /var/www/admin/ ServerName admin.bidianer.com <Directory "/var/www/admin/"> Options FollowSymLinks AllowOverride all Order allow,deny Allow from all </Directory> ErrorLog "/mnt/bidianer_error.log" CustomLog "/mnt/bidianer_runtime.log" common </VirtualHost>
这里的虚拟主机是80端口,而https
走的是443
接口,因此咱们不能再使用以前的80
端口配置。须要从新配置。可是,若是咱们还想保留http
访问,也想用https
访问,那么就保留这个配置,再新建一个配置。
<VirtualHost *:443> DocumentRoot /var/www/admin/ ServerName admin.bidianer.com <Directory "/var/www/admin/"> Options FollowSymLinks AllowOverride all Order allow,deny Allow from all </Directory> SSLEngine on SSLProtocol TLSv1 TLSv1.1 TLSv1.2 SSLv3 SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4 SSLCertificateFile cert/admin/public.pem SSLCertificateKeyFile cert/admin/214082306780502.key SSLCertificateChainFile cert/admin/chain.pem ErrorLog "/mnt/bidianer_error.log" CustomLog "/mnt/bidianer_runtime.log" common </VirtualHost>
解释: 上面这个配置是监听443
端口,因此当使用https
访问的时候会使用该配置。该配置大部分和上面的都相同,可是却多了这一段代码。
SSLEngine on SSLProtocol TLSv1 TLSv1.1 TLSv1.2 SSLv3 SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4 SSLCertificateFile cert/admin/public.pem SSLCertificateKeyFile cert/admin/21408*****0502.key # 这里我隐藏了部分数字 SSLCertificateChainFile cert/admin/chain.pem
这段代码就是告诉服务器使用刚刚咱们下载好的证书。把其中的地址改成你的就能够了(尤为注意那串数字文件要记得改)
接下来重启apache
服务器
/etc/init.d/apache2 restart
打开浏览器,使用https
协议访问你的网站(这个https
生效须要时间,时间不肯定,因此不会当即能够访问)。个人https://www.bidianer.com
。绿色图标出现,一切ok
这部份内容不是必须的,是你使用了CDN服务才会用到
若是你在阿里云买了CDN
,那么如何使用HTTPS
。这个方法很简单,阿里云已经提供了。
在开始以前,首先记得把你的相关域名解析到阿里云的CNAME
,这样才可使用CDN
,再谈CDN
使用HTTPS
第一步,打开你的CDN
域名列表
点击相关域名的配置连接,进入配置页面。
主要须要配置红框内两个内容。
第一个回源设置
其中源站信息,有3种选择,这里比较经常使用的是IP,选择后填写IP地址便可,端口选择443端口
回源HOST,开启,选择加速域名。
回源方式,开启协议跟随回源
这里说一下回源HOST
,这个最好选择默认的加速域名,不要选择自定义,若是你当前的域名是www.bidianer.com
,你自定义回源HOST为bidianer.com
,那么在你网站中获取的网站host
信息就是bidianer.com
而不是www.bidianer.com
。
好比PHP中$_SERVER['HTTP_HOST']
就是bidianer.com
,而不是www.bidianer.com
,会出问题有时候。
第二个HTTPS
设置
点击状态开启便可。
选择你以前建立的相关域名证书。
强制跳转能够选择本身想要的。
这里说下证书名称要和你的证书列表对应起来,不然会出错。证书名称在这里:
开始你的多是一串乱七八糟的数字,最好修改一下,后面选择证书不会出错。
选错了证书会有啥问题?
浏览器地址栏会提示:
用户打开会是个警告页面,网站就倒闭了。
最后提醒下,CDN使用HTTPS也会有很长时间的延迟,不要着急
严颖,星空幻颖
2017.4.27