给你的网站穿上外衣 - HTTPS 免费部署指南

news/2024/4/28 14:57:23/文章来源:https://blog.csdn.net/weixin_34319640/article/details/89276062

前言

随着国内各大网站纷纷开启全站 HTTPS 时代,HTTPS 已不再是支付等敏感操作过程的专属,开启 HTTPS 对于个人网站或者小型网站也不再遥不可及。 今天博主就以自己的网站 www.rapospectre.com 为例叙述一下为自己网站点亮 HTTPS 小绿锁的过程。

HTTP 和 HTTPS

HTTPS( Hypertext Transfer Protocol over Secure Socket Layer ),是以安全为目标的 HTTP 通道,简单讲是 HTTP 的安全版。即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL ,因此加密的详细内容就需要 SSL 。 它是一个 URI scheme( 抽象标识符体系 ),句法类同 http :体系。用于安全的 HTTP 数据传输。 https:URL 表明它使用了 HTTP,但 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP 与 TCP 之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

HTTP 超文本传输协议 ( HTTP-Hypertext transfer protocol ) 是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。

从概念里可以看到,要开启 HTTPS 至关重要的一点就是 ssl 层的身份验证,而身份验证需要用到 ssl 证书,以前少有免费 ssl 证书,所以小站基本不会选择 https ,而现在网上提供个人免费 ssl 证书的机构越来越多,这使得免费升级站点为 https 成为可能。

1. 申请 SSL 证书

网上已经有不少机构提供个人免费 ssl 证书,有效期几个月到几年不等,博主使用的是 StartSSL, 申请成功后有效期 3 年,到期后可免费续租。 具体申请过程不复杂,注册后根据提示验证网站 + 生成证书即可,如果不清楚可以 Google 一下。

要注意 StartSSL 验证网站拥有者时是给域名所有者的邮箱发验证邮件,如果域名开启了隐私保护请暂时关闭。

然后在自己服务器中生成 SSL 证书的 csr ,记住生成输入的秘密,之后要用到:

openssl req -new -sha256 -key rapospectre.com_secure.key -out rapospectre.com.csr

假设以上文件生成在 /var/tmp 文件夹下

在 StartSSL 填写 csr 文件内容,生成 SSL 证书并下载, 生成成果后如图:

点击 Retrieve 下载证书,解压缩后包含各种服务器的 crt ,博主使用 nginx 做反代,所以选择 nginxserver 解压缩后得到 www.rapospectre.com_bundle.crt 将此文件上传到服务器,假设传到 /var/tmp/ 文件夹

2. 配置服务器

以 nginx 为例,打开 /etc/nginx/nginx.conf,加入配置:

 server {listen       443 ssl;ssl_certificate /var/tmp/www.rapospectre.com_bundle.crt;ssl_certificate_key /var/tmp/rapospectre.com_secure.key;ssl_prefer_server_ciphers on;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;#选择特定的加密方式, 避免已知的漏洞ssl_ciphers 'kEECDH+ECDSA+AES128 kEECDH+ECDSA+AES256 kEECDH+AES128 kEECDH+AES256 kEDH+AES128 kEDH+AES256 DES-CBC3-SHA +SHA !aNULL !eNULL !LOW !MD5 !EXP !DSS !PSK !SRP !kECDH !CAMELLIA !RC4 !SEED';#让浏览器记住直接访问 https 的网址, 不再去 http 重定向。add_header Strict-Transport-Security 'max-age=31536000; preload';add_header X-Frame-Options DENY;ssl_session_cache   shared:SSL:10m;ssl_session_timeout 10m;keepalive_timeout 70;ssl_dhparam /var/tmp/dhparam2048.pem;#禁止服务器自动解析资源类型add_header X-Content-Type-Options nosniff;#防XSS攻擊add_header X-Xss-Protection 1;server_name  www.rapospectre.com rapospectre.com;

在之前的 80 端口进行重定向配置:

server {listen 80;server_name rapospectre.com www.rapospectre.com;return 301 https://www.rapospectre.com$request_uri;
}

3. HTTP 替换

将网站所有以 http 方式获取的资源全部改为 https 方式或自动方式获取, eg:

<script src="http://xx.cdn.com/jquery.js"></script>
改为
<script src="https://xx.cdn.com/jquery.js"></script>
或
<script src="//xx.cdn.com/jquery.js"></script>

重启服务器,提示输入之前生成 csr 的密码,输入密码,重启成功,访问 https://www.rapospectre.com 可以看到 HTTPS 已经正常工作!

顺手来一发 SSLLABS测试,wtf 只有 F?

看图发现因为

This server is vulnerable to the OpenSSL Padding Oracle vulunerability ( CVE-2016-2107 )

原来是 OpenSSL 漏洞的锅,升级 OpenSSL 到 1.0.2h 版 ( 后续版本应该也可以,博主一开始升级到了最新的 1.1.0a 结果服务器挂了 ) 即可修复漏洞:

Fix OpenSSL Padding Oracle vulnerability (CVE-2016-2107) - Ubuntu 14.04

# Based on http://fearby.com/article/update-openssl-on-a-digital-ocean-vm/$ apt-get update
$ apt-get dist-upgrade$ wget ftp://ftp.openssl.org/source/old/1.0.2/openssl-1.0.2h.tar.gz
$ tar -xvzf openssl-1.0.2h.tar.gz
$ cd openssl-1.0.2h
$ ./config --prefix=/usr/
$ make depend
$ sudo make install
$ openssl version
# OpenSSL 1.0.2h  3 May 2016# now restart your nginx or other server
$ nginx -s reload

4. HTTP2

开启 http2 ,nginx 在 1.9.5 以后的版本才开始支持 http2 ,之前一直使用的是 spdy 而 ubuntu 自带的 nginx 是 1.4.6 的古董, 所以需要重新编译安装新版的 nginx ,博主选择了安装最新的 nginx 1.11.4:

1. 下载 nginx 到 /var/tmp/nginx:

wget http://nginx.org/download/nginx-1.11.4.tar.gz

2. 解压nginx-1.11.4.tar.gz文件

tar zxvf nginx-1.11.4.tar.gz

3. 进入ngixn-1.11.4文件夹

cd nginx-1.2.5

4. 查看nginx原来的配置

nginx -V

上面的命令将输出类似如下信息:

--with-cc-opt='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_sub_module --with-http_xslt_module --with-mail --with-mail_ssl_module

我们在后面加上 http2 模块与 上一步中 openssl 源码( 是源码路径不是安装 )路径:

--with-http_v2_module --with-openssl=/var/tmp/ssl/openssl-1.0.2h

注意,如果以上信息内包含 --with-spdy_module 请去除,nginx 1.9.5 之后已弃用 spdy

5. 执行configure命令,后面跟上原来nginx的配置

./configure --with-cc-opt='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_sub_module --with-http_xslt_module --with-mail --with-mail_ssl_module --with-http_v2_module --with-openssl=/var/tmp/ssl/openssl-1.0.2h

configure时可能遇到的几个错误:

  1. --with-http_xslt_module 时提示 the HTTP XSLT module requires the libxml2/libxslt libraries

    apt-get install libxml2 libxml2-dev libxslt-dev
  2. --with-http_image_filter_module 时提示 the HTTP image filter module requires the GD library.

    apt-get install libgd2-xpm-dev
  3. --with-http_geoip_module 时提示 the GeoIP module requires the GeoIP library.

    apt-get install geoip-database libgeoip-dev
  4. ./configure: error: the HTTP rewrite module requires the PCRE library.

    apt-get install libpcre3 libpcre3-dev

再次执行 configure 命令, 然后make && make install。 编译好以后objs目录下多出一个nginx文件,用它替换旧的 nginx 文件:

mv /usr/sbin/nginx /usr/sbin/nginx-backup
cp objs/nginx /usr/sbin/nginx

执行/usr/sbin/nginx -t 命令检查配置文件返回下面的信息:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

表示 nginx 升级成功,修改 nginx 配置,加入 http2 支持:

listen       443 ssl http2 fastopen=3 reuseport;

重启 nginx 访问正常后再测一发:

搞定,个人网站加入 HTTPS 并且 SSLABS 评分 A+ 。 快来试试吧~

( 博主网站图片上传到七牛,而七牛免费似乎账户不支持 https 链接,所以有些文章比如说这篇会提示网页内有不安全的内容 )

原文地址:https://www.rapospectre.com/b...

作者:rapospectre

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_700975.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[转载 js] YUI解决mouseout事件冒泡的办法

原文出处&#xff1a;http://design.alibaba-inc.com/?qnode/727&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&am…

如何查看服务器有多少网站--免费工具

一台虚拟主机上到底有多少个网站或者说同一ip下有多少个域名和网站&#xff1f;这是站长们都很关心的&#xff0c;因为这样可以知道你的站到底和谁是邻居&#xff0c;有时候如果你和百度黑名单上的垃圾站在同一空间下&#xff0c;你也会受到牵连。 那么怎 ...中间左侧广告 一台…

asp.net获取网站路径

网站在服务器磁盘上的物理路径: HttpRuntime.AppDomainAppPath 虚拟程序路径: HttpRuntime.AppDomainAppVirtualPath 任何于Request/HttpContext.Current等相关的方法, 都只能在有请求上下文或者页面时使用. 即在无请求上下文时,HttpContext.Current为null. 而上面提到的方法一…

知名网站的 404 页面长啥样?

来自&#xff1a;程序猿&#xff08;微信号&#xff1a;imkuqin&#xff09;每天浏览各大网站&#xff0c;难免会碰到404页面啊。你注意过404页面么&#xff1f;猿妹搜罗来了下面这些知名网站的404页面&#xff0c;以供大家欣赏&#xff0c;看看哪个网站更有创意&#xff1a;腾…

开源Jekyll助您构建你的网站

Jekyll 是一个开源的静态网站生成器。你可以使用 Markdown 编写内容&#xff0c;使用 HTML/CSS 来构建和展示&#xff0c;Jekyll 会将其编译为静态的 HTML。Jekyll 是一个开源的静态网站生成器。你可以使用 Markdown 编写内容&#xff0c;使用 HTML/CSS 来构建和展示&#xff0…

用WWWGrep来检查你的网站元素安全

WWWGrep是一款针对HTML安全的工具&#xff0c;该工具基于快速搜索“grepping”机制实现其功能&#xff0c;并且可以按照类型检查HTML元素&#xff0c;并允许执行单个、多个或递归搜索。 关于WWWGrep WWWGrep是一款针对HTML安全的工具&#xff0c;该工具基于快速搜索“grepping…

免费下载高质量素材资源的28个网站推荐

Web设计人员经常会去网上搜罗各种各样的素材&#xff0c;这些免费素材不仅能帮助他们节省大量的时间&#xff0c;还能有很好的效果。如今&#xff0c;网络上有很多很多有才华的设计师分享它们的劳动成果&#xff0c;让更多的人可以使用他们的创意设计&#xff0c;谢谢他们。今天…

网站性能优化的常用方法

网站性能的优化是一件大事。它涉及多个方面需要照顾&#xff0c;其中许多取决于网站本身、其复杂性和元素。但是&#xff0c;还有一些适用于任何站点的常用优化方法。集成 CDN 内容交付网络(又名 CDN)是一个非常棒的工具&#xff0c;可以集成到你的网站中&#xff0c;因为它可…

刷了几千道算法题,我私藏的刷题网站都在这里了

作者 | Rocky0429 来源 | Python空间&#xff08;ID: Devtogether&#xff09;遥想当年&#xff0c;机缘巧合入了 ACM 的坑&#xff0c;周边巨擘林立&#xff0c;从此过上了"天天被虐似死狗"的生活...然而我是谁&#xff0c;我可是死狗中的战斗鸡&#xff0c;智力不够…

深度学习会议论文不好找?这个ConfTube网站全都有

BDTC大会官网&#xff1a;https://t.csdnimg.cn/q4TY作者 | 刘畅 出品 | AI科技大本营&#xff08;ID:rgznai1000&#xff09;最近跟身边的硕士生、博士生聊天&#xff0c;发现有一个共同话题&#xff0c;大家都想要知道哪款产品能防止掉头发&#xff1f;养发育发已经成了茶余饭…

不到顶会现场也能听论文讲解?这个视频集合网站值得收藏

BDTC大会官网&#xff1a;https://t.csdnimg.cn/q4TY作者 | 刘畅出品 | AI科技大本营&#xff08;ID:rgznai1000&#xff09;最近跟身边的硕士生、博士生聊天&#xff0c;发现有一个共同话题&#xff0c;大家都想要知道哪款产品能防止掉头发&#xff1f;养发育发已经成了茶余饭…

Nginx搭建静态网站

2019独角兽企业重金招聘Python工程师标准>>> 搭建Http静态服务器环境 搭建静态网站&#xff0c;首先需要部署环境。下面的步骤&#xff0c;将告诉大家如何在服务器上通过 Nginx 部署 HTTP 静态服务。 安装 Nginx 在 CentOS 上&#xff0c;可直接使用 yum 来安装 Ngi…

aes离线解密工具_CTF常用工具、网站、练习平台

常用工具网站CTFtools 比较全的工具下载网站&#xff0c;提供百度云链接BUUCTF 比较全的工具下载网站&#xff0c;提供百度云链接XSS 之旅 xss 攻击练习网站&#xff0c;闯关式设计&#xff0c;难度递增tooleyes 在线工具库&#xff0c;一些编码和算法之类的都有千千秀字常用密…

真爱!微软宣布新开源网站,由 Jekyll 一键生成,代码所见即所得

来源 | Microsoft编辑 | 小匀转自 | 新智元近日&#xff0c;微软上线了一个新的开源网站。这不是微软唯一的开源网站&#xff0c;但却代表了新的起点。网友表示&#xff1a;这次真的拥抱开源了&#xff01;从「恨」到「爱」&#xff0c;微软与开源有着一段长达30年的故事。微软…

怎样监测微型的网站服务

最终我意识到&#xff0c;我所要写的任何服务器的风险都很低&#xff0c;如果它们偶尔宕机 2 小时也没什么大不了的&#xff0c;我只需设置一些非常简单的监控来帮助它们保持运行。 你好! 我最近又开始运行一些服务器&#xff08;​​nginx playground​​​、​​mess with dn…

关于mouseenter、mouseover、mouseout、mouseleave的理解

先说结论&#xff1a;enter、leave是元素区域上的进入和离开&#xff0c;over、out是逻辑上的进入和离开。 enter和leave只在离开元素区域时触发&#xff0c;比如下面这个子元素在父元素的区域中&#xff0c;那么进入、离开子元素是不会触发的&#xff0c;因为子元素在父元素的…

php网站首页点击更多时获取数据,jQuery+PHP实现点击按钮加载更多,不刷新页面加载更多数据!附:可用源码+demo...

先上效果&#xff1a;刚打开页面的时候&#xff0c;只显示部分数据&#xff0c;点击加载更多的时候&#xff0c;就会加载我们预先定义的加载数量显示出来&#xff01;当数据库里面的所有数据都显示出来&#xff0c;就提示全部加载了&#xff01;新建index.phpjQueryphp实现点击…

整理一周的Python资料,包含各阶段所需网站、项目,2020燥起来!

回复“pythonpdf“&#xff0c;立刻领取100本全品类Python电子书不知怎么的&#xff0c;最近不少关注我的读者都开始私信我怎么学好python&#xff1f;零基础转行是不是合适&#xff0c;还有希望吗&#xff1f;今年30了&#xff0c;还能不能转IT&#xff1f;其实关于零基础转型…

深度学习三巨头也成了大眼萌,这个一键转换动画电影形象的网站竟因「太火」而下线...

机器之心报道作者&#xff1a;魔王、杜伟想不想在动画电影中拥有自己的角色&#xff1f;这个网站一键满足你的需求&#xff0c;不过竟因流量太大成本过高而下线。近期热映的电影《花木兰》总是让人回想起 1998 年上映的同名动画电影。说起来&#xff0c;动漫真人化或动画版翻拍…

网站位置服务器,如何查看网站的服务器位置

如何查看网站的服务器位置 内容精选换一换华为云主机迁移服务帮助中心&#xff0c;为用户提供产品简介、快速入门、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档&#xff0c;帮助您快速上手使用主机迁移服务。用户云服务器基本网络功能异常&#xff0c;无法完成…