array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 个人博客网站升级http为https - 爱码网
studytime

原文作者:studytime
原文链接:https://www.studytime.xin/

针对个人博客网站升级https,整理了下http和https的一些分析,以及配置方法

目录

HTTP与HTTPS是什么?

HTTP协议(超文本传输协议)是互联网上应用最为广泛的一种网络协议,常被用于在web浏览器和网站服务器之间传递信息,http协议传输数据是以明文方式进行传送,如果中途被截获,就可以读取其中的信息。还记得之前公司某一台医疗设备的登录界面被截获,页面上都是广告的情况。
为了解决HTTP协议的这一缺陷,就延伸出HTTPS协议 (安全套接字层超文本传输协议),HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,为web浏览器和服务器之间的通信数据进行加密。

HTTPS协议的主要作用分为两种:

  1. 建立一个信息安全通道,来保证数据传输的安全
  2. 确认网站的真实性。

HTTP与HTTPS有什么区别

  1. https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
  2. http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
  3. http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  4. http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比

证书申请配置流程

  1. 阿里云或者腾讯云都有免费的证书,我的域名备案服务商是阿里云,所有我也就用阿里云了
  2. 登录阿里云->阿里云控制台->产品与服务->SSL证书(应用安全)->购买证书
  3. 购买证书->选择品牌( Symantec)->证书类型选择(免费型DV SSL)->立刻购买
  4. 证书申请录入需要的信息-> 证书绑定域名,所在地等
  5. 上传:系统生成 CSR,点一下 创建。
  6. 完成上述后,提交审核即可
  7. 如果正常,一般1,2个小时,证书就会审核通过

如果一切正常,10 分钟左右,申请的证书就会审核通过。

image

证书申请是需要验证域名的,阿里云ssl证书的认证提供了三种

  • 自动 DNS 验证,此时你需要在域名解析记录中,增加一条TXT记录,证明域名是你的,阿里云的域名的话就是自动增加一条认证记录
  • 手工DNS验证,需要自行在域名解析记录中,增加一条TXT记录,进行域名认证
  • 文件认证,按照说明下载认证文件传入服务器中,域名指向目录下,进行访问即可。

证书申请需要填写的信息:

image

在域名的管理里,因为我用了阿里云的 DNS 解析服务,所以会自动添加一条 CNAME 记录,这条记录就是验证域名所有权用的:

image

下载证书

在阿里云证书管理目录中,如果申请的证书通过审核后,就可以进行下载。可以选择下载不同的类型,常见的有nginx,以及apach等服务器。根据自己网站的类型,选择下载对应的证书。上传到服务器目录中,解压后会获取到两个文件,文件后缀分别是 *.key,和 *.pem。

image

配置 NGINX 的 HTTPS

证书上传服务器后,就需要去配置服务器。不同的服务器配置不一样。因为我的项目运行环境是lnmp环境下。我的配置方法就是用的是nginx类型的。我的域名是 www.studytime.xin.

下载并上传证书实例

登录服务器ssh AliCloud

创建一个存储证书的目录:
sudo mkdir -p /usr/local/nginx/ssl/studytime

把申请并下载下来的证书,上传到上面创建的目录的下面。

scp local_path root@ip:/usr/local/nginx/ssl/studytime

证书上传后的路径:
/usr/local/nginx/ssl/studytime/1650160_studytime.xin.key
/usr/local/nginx/ssl/studytime/1650160_studytime.xin.pem

配置NGINX文件

可以允许网站同时支持http以及https。http使用的默认断后是80,https使用的默认顿口是443。
针对这个问题需要特殊说明下,服务器必须开启响应的80和443端口给外网。一般服务器的安全组是默认开启的,若没有开启可以自行搜索处理,centos7怎么开启80和443端口等。

下面是一个基本的监听 443 端口,使用了 SSL 证书的 NGINX 配置文件,创建一个配置文件:

touch /usr/local/nginx/conf/vhosts/studytime.conf

把下面的代码粘贴进去:

server {
  listen       443;
  server_name  www.studytime.xin;
  ssl          on;
  root /data/wwwroot/blog;
  index index.html;
  ssl_certificate  /usr/local/nginx/ssl/studytime/1650160_studytime.xin.pem;
  ssl_certificate_key  /usr/local/nginx/ssl/studytime/1650160_studytime.xin.key;
  ssl_session_timeout 5m;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
  ssl_prefer_server_ciphers on;
}

上面的配置里,ssl_certificate 与 ssl_certificate_key 这两个指令指定使用了两个文件,就是你下载的证书,解压之后看到的那两个文件,一个是 *.pem,一个是 *.key。你要把这两个文件上传到服务器上的某个目录的下面。

重新加载 NGINX 服务:

sudo nginx -s reload

验证配置

在浏览器上输入带 https 的网站地址:https://studytime.xin

如果正确的配置了让服务器使用 SSL 证书,会在地址栏上显示一个绿色的小锁头图标。

点开那个小锁头,会显示安全连接,再打开 详细信息。

NGINX 配置使用 301 重定向,会让对 HTTP 网页的请求,重定向到 HTTPS 版本的网页上。

server {
  listen        80;
  server_name   studytime.xin www.studytime.xin;
  return 301    https://$host$request_uri;
}

更多精彩内容,请关注作者博客,https://studytime.xin

分类:

技术点:

相关文章: