干货 阿里云服务器申请免费证书开启ssl实现支持https的操作流程 及 显示“非安全连接”的解决办法

帮朋友配置服务器对https的支持,也就是ssl证书。傻瓜式的步骤,估计下次他看这个自己就会搞了吧。这是一篇只用了10多分钟写完的流程,没有仔细审阅。如果里面有问题请告诉我一生。

准备工作

首先当然是环境都弄好了。安装好php全家桶,nginx选好相应的版本,安装好ssl(一般集成环境里面有。开启就完事了)
案例的服务器配置是:
阿里云服务器 * 1
centos6.5(为啥这么老)
php5.6,
mysql4.9
nginx1.17.1(为啥这个这么新)
openssl 1.0.1e
这几样的安装方法网上一抓一大把,这里我就不复述了
比较重要的是openssl成功开启后在phpinfo()中会看到此信息
在这里插入图片描述

获取证书

申请证书

在阿里云控制台的搜索框中输入"ssl证书",就能找到直达入口。就是下图这个神奇的位置:
就是这个神奇的位置
点击“ssl证书(应用安全)”按钮购,进入证书管理页面。
首先点击证书管理页面中的这个“购买证书”按钮:
在这里插入图片描述
进入ssl证书配置选择页面,如果你的网站有更专业的认证需求,那么你需要根据情况选择付费证书。如果你是个人网站或是普通官网,可以申请免费证书使用。如图进行配置,就可以免费购买证书
在这里插入图片描述
由于免费证书一次智能申请1个,如果你有子域名需求,那么在购买数量这一栏可以多填几个。都是免费的。选择好后点击“立即购买”按钮,就进入支付页面了
在这里插入图片描述
确认法律法规后,点击去支付。当然,是不花钱的。。
在这里插入图片描述
终于你看到了这个页面。到这一步就完成了证书的申请。
点击证书控制台,就可以看到“未签发”这里,有你的申请记录。
在这里插入图片描述
接下来就是等待。虽然阿里云声称是1天时间审核,实际上1个小时内就能完成审核。
通过审核的证书,就可以在“已签发”这一栏看到了:
在这里插入图片描述
可以看到,免费证书的有效期是1年。1年后别忘了来重新免费。。。购买

下载证书

接下来点击证书管理右侧的 下载按钮,就看到了这个菜单
在这里插入图片描述
“帮助”按钮是nginx的配置帮助。“下载”按钮就是下载我们的证书。由于我们是nginx服务,所以点击nginx那栏的下载按钮。
下载完成后,解压下载后的安装包就可以看到证书的 本体了。nginx版本的长这样:
在这里插入图片描述

将证书上传至服务器

进入服务器,进入nginx的配置文件目录。我的配置路径是/etc/nginx/conf.d/
在这个路径下建立一个文件夹起名为:www.xxxx.com.cert.d
使用ftp软件,比如filezilla什么的,把这两个文件上传到刚才新建的文件夹下这一步就完成了

修改nginx配置

这一步的目的是允许浏览器通过https访问nginx服务.
以下是简单的配置实例,第一个server是普通的http访问,第二个是https访问。正常来说我们还应该设置http转https的规则。把这段代码复制下来,根据我注释的说明去配置,就可以了。

# http访问
server {
  listen 80; #http的外网访问默认端口是80
  server_name www.xxxx.com;  #你的网站域名
  index index.html index.htm index.php index.js;#定义你的项目入口文件
  root /var/wwwroot/www.xxxx.com/;#定义你的网站根目录
  # 将所有的http请求,转到下面https处理方案
  location / {
     rewrite (.*) https://www.你的域名$1 permanent; 
  }
  access_log /etc/nginx/logs/www_access.log main;
}
# 以下是本文重点的https 设置
# https访问
server {
  listen 443 ssl; # nginx1.15以上需要这么写才能开启ssl。以前的版本的写法是:listen 443; ssl on;
  server_name www.xxxx.com;  #你证书上注册的域名
  root /var/wwwroot/www.xxxx.com/; # 网站根目录
  index index.html index.htm index.php index.js; #网站入口文件
  #以下两个需要设置刚才上传的证书文件路径
  ssl_certificate /etc/nginx/conf.d/www.xxxx.com.cert.d/www.xxx.com.pem;
  ssl_certificate_key /etc/nginx/conf.d/www.xxxx.com.cert.d/www.xxxx.com.key;
  ssl_session_timeout 5m;
  # 加密规则配置,可以直接copy使用 
  ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers on;
  # 解析php所用的设置
  location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;#php-fpm的默认端口是9000
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_intercept_errors on;
    fastcgi_buffer_size 4K;
    fastcgi_buffers 128 4k;
    fastcgi_connect_timeout 50;
    fastcgi_send_timeout 40;
    fastcgi_read_timeout 40;
    try_files $uri =404;
    include fastcgi_params;
  }
}

其实最主要的就是在这里开启ssl,并指定证书文件路径。

开启阿里云端口

很多人明明按以上步骤做好了相关配置,但就是无法顺利访问https。主要原因就是这个端口问题。由于案例云需要配置安全策略组,所以就算你在linux开启了相关端口,外部也是无法使用的。必须在安全策略组注册端口才行。
首先在阿里云页面找到你的服务器管理页面。我是云服务器,所以要点击"云服务器ecs"按钮
在这里插入图片描述
选择运行中的实例
在这里插入图片描述

选择你的服务器,然后点击管理按钮
在这里插入图片描述在这个页面中点击本实例安全策略组
在这里插入图片描述
点击配置规则在这里插入图片描述
点击快速添加按钮
在这里插入图片描述
按如图中的配置就可以打开https专用的443端口了
在这里插入图片描述

保险起见,最后还是重启一下nginx服务把
service nginx restart
到这一步就完成了所有配置。用https://去访问你的网站吧。

虽然服务器支持https访问了,但浏览器地址栏前面总是显示“非安全连接”怎么办

除了检查你的网页通讯加密相关的配置外,你的网页中有非安全连接“http://”也会导致这个情况出现。你可以有很多办法解决这个问题。比如资源迁移到安全连接,又或是写转接方法处理页面等等。如果你使用的是比较著名的框架,比如yii、leverl、worldpress、express什么的,应该还会找到相应的插件去解决这些问题。不用任何修改,安装就好就可以了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章