微信小程序阿里云服务器https搭建

1.什么是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中,提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

2.如何在阿里云服务器上申请ssl证书?

在阿里云上注册了域名和购买了云服务器ECS,ECS的配置是弹性的,可以根据自己的需要来选择合理的配置,如果你是个初学者为了学习用的话,一开始选择最低配置就行了。

因为在小程序的生产环境中,为了安全考虑,调用服务器的REST API或WebSocket的话,服务器必须提供安全的链接地址(如mydomain/myservice, wss://mydomian),即需要使用SSL。所以我们需要为我们的服务器购买CA证书和域名。

在阿里云上注册域名还是很方便的,可以到wanwang.aliyun.com这个页面去注册一个。而CA证书,很多国内外机构都提供证书签发认证,国内的比如沃通,国外的如Symantec,这个证书还是有点贵的,根据证书的不同功能,价格也是相差很大,最便宜的也要好几百一年。现在也有免费的证书可以使用,比如Let's Encrypt。不过,阿里云上也提供了免费的证书,申请起来很方便,我们就来看看怎么申请阿里云里的免费证书。

从阿里云的页面顶部菜单“产品与服务”里面,可以看到“CA证书服务”:

微信小程序阿里云服务器https搭建

CA证书服务菜单

进入页面后,点击页面右上角的“购买证书”按钮,进入证书选择界面:

微信小程序阿里云服务器https搭建

证书选择

在这里可以选择“免费型DV SSL”证书,这种证书购买一个证书只能对一个明细域名生效,也就是说如果你有几个子域名,如blog.mydomain.com, www.mydomain.com, shop.mydomain.com的话,你分别需要购买3个证书。

微信小程序阿里云服务器https搭建

购买完成后,可以在你购买的订单列表里,点击“补全”信息,输入要绑定这个证书的域名,以及你的个人详细信息等等,提交给签发机构审核,审核完成后,你之前填写的邮箱里也会收到一封如何设置的邮件(这个邮件主要是给域名不是在阿里云注册的用户的设置指南,如果域名在阿里云注册,则会自动对你的域名添加解析记录,不需要你手动去添加)。

然后,请在订单列表中,点击“下载”证书文件的按钮,下载证书文件,里面包含了一些对于不同http server用的证书,如apache, nginx, IIS等,它们用于配置你服务器上安装的http server。

我是Apache的服务器,所以我下载的是Apache的证书。

微信小程序阿里云服务器https搭建


 注意:这里的证书路径一定要改,不是直接使用他的路径,一定要按照自己的Apache服务器安装路径来;

3.关于httpd-ssl.conf文件的修改

第一步:修改apache目录下的conf下的httpd.conf配置文件

1、#LoadModule ssl_module modules/mod_ssl.so删除行首的配置语句注释符号“#”

2、增加一条引用语句   Include conf/vhostssl.conf

第二步:

1:在apache目录下创建cert文件夹,将下载的证书解压到cert文件夹里一共解压出4个文件

2、在conf文件夹中创建一个vhostssl.conf配置文件。

3、编辑vhostsssl.conf文件,增加如下内容:

Listen 443

<VirtualHost *:443>

SSLEngine on

SSLProtocol all -SSLv2 -SSLv3

SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5

SSLCertificateFile "D:/Apache/cert/public.pem" 注:证书路径要填对

SSLCertificateKeyFile "D:/Apache/cert/213952167170478.key"  注:证书路径要填对

DocumentRoot  "D:\phpStudy\WWW"

<Directory />

Options +Indexes +FollowSymLinks +ExecCGI

AllowOverride All

Order allow,deny

Allow from all

Require all granted

</Directory>

</VirtualHost>

其中

SSLCertificateFile 是指证书公钥证书里有一个以public为名字且后缀是pem的

SSLCertificateKeyFile   是指证书私钥 在下载的证书里有一个以一串数字为名字且后缀是key的

DocumentRoot  "D:\phpStudy\WWW"这是网站路径根据自己的

保存重启服务器(有可能报错,看一下443端口是否被防火墙拦截或被占用)

apache正常重启后,以https访问,在浏览器里面输入https://yourdomain.comyourdomain.com改为你设置绑定的域名)即可。

4.http自动转换为https的方法,为了强制用户使用加密链接,防止通过http打开

先打开Apache的Rewrite功能。

1.Apahce的配置方法,简单来说就是配置一个301重定向,需要在你的网站根目录下的.htaccess文件

针对固定一个域名进行重定向:
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{HTTP_HOST}   ^api.doysu.net

RewriteRule ^(.*)$ https://api.doysu.net [R=301,L]

针对整站进行重定向:

RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)?$ https://%{SERVER_NAME}/$1 [L,R=301]

对某个目录做https强制跳转:

RewriteEngine on
RewriteBase /你的目录名称
RewriteCond %{SERVER_PORT} !^443$
#RewriteRule ^(.*)?$ https://%{SERVER_NAME}/$1 [L,R]
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]