用 Nginx 基于 Let's Engypt 免费证书打造快速安全的 HTTPS 网站

news/2024/5/3 21:58:11/文章来源:https://blog.csdn.net/weixin_34258078/article/details/88991878

我大EOI的官网正式上线啦!为了打造公司第一个正式上线的公开站点,我们着实费了不少心思,其中之一就是如何把它搞得快速安全。我们用 Nuxt 做了 SSR,而且启用了 PWA module,Lighthouse 得分在 90 分以上。官网在保证 IE9 兼容性的基础上,还使用了诸如 InteractionObserver 等新特性努力提升速度。

另外一点就是安全性了。虽说是一个介绍性的网站,HTTPS 还是要上的。我想到了近来一直很火的 Let's Engypt 免费证书,既给公司省钱,又省去了申请证书的麻烦。

这次就是用全球最快的 Web 服务器 Nginx + 免费好用的 Let's Engypt 证书打造我们公司官网的一些记录,或者说是心得分享。

编译 Nginx

公司使用的是阿里云服务器,CentOS 系统。CentOS 7 自带 OpenSSL 1.0.1e,不支持 ALPN,在新版的 Chrome 浏览器上不能启用 HTTP 2。

我选择自己编译 Nginx,这样还可以把 br 压缩模块 和 证书透明模块 也编译进去。当然如果你不需要后两个模块,可以直接用外国网友编译好的 rpm 包:https://brouken.com/repo

下载 OpenSSL 源码

首先下载 OpenSSL,解包

$ wget https://www.openssl.org/source/openssl-1.1.0f.tar.gz
$ tar -zxvf openssl-1.1.0f.tar.gz
$ cd openssl-1.1.0f

我还打了 Cloudflare 的 SSL 补丁

$ wget https://github.com/cloudflare/sslconfig/raw/master/patches/openssl__1.1.0_chacha20_poly1305.patch
$ patch -p1 < openssl__1.1.0_chacha20_poly1305.patch

下载第三方 Nginx 模块

下载 ngx_brotli 以支持 br 压缩方式

$ git clone https://github.com/google/ngx_brotli.git

下载 nginx-ct 以支持证书透明(Certificate Transparency)

$ git clone https://github.com/grahamedgecombe/nginx-ct.git

顺带把方便好用的 headers-more-nginx-module 也编译进去

$ git clone https://github.com/openresty/headers-more-nginx-module.git

下载并编译 Nginx

下载 Nginx 源代码

$ wget http://nginx.org/download/nginx-1.13.4.tar.gz
$ tar -zxvf nginx-1.13.4.tar.gz
$ cd nginx-1.13.4.tar.gz

打补丁

$ wget https://github.com/cloudflare/sslconfig/raw/master/patches/nginx_1.13.1_http2_hpack.patch
$ patch -p1 < nginx_1.13.1_http2_hpack.patch

编译 Nginx。我选择使用官方的编译参数加入特定模块后直接替换 Nginx 可执行文件的方式,以支持使用 systemctl 以服务的方式启动。OpenSSL 以静态链接的方式编译到 Nginx 内部,以免对系统其它程序造成干扰

$ ./configure --prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--http-client-body-temp-path=/var/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--user=nginx --group=nginx --with-file-aio --with-threads --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-http_auth_request_module --with-mail --with-mail_ssl_module --with-stream --with-stream_ssl_module --with-stream_realip_module --with-debug --with-cc-opt='-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic' --with-ld-opt='-Wl,-z,relro -Wl,-E' --with-openssl=`realpath ../openssl` --with-openssl-opt="enable-ec_nistp_64_gcc_128 enable-weak-ssl-ciphers" --add-module=`realpath ../ngx_brotli` --add-module=`realpath ../nginx-ct` --add-module=`realpath ../headers-more-nginx-module`
$ make

替换官方的 Nginx。确保预先安装了官方的 rpm 包

$ sudo mv /usr/sbin/nginx /usr/sbin/nginx.old
$ sudo cp objs/nginx /usr/sbin/nginx

申请证书

Let's Engypt 官方的 certbot 在 CentOS 系统上有各种依赖问题,各种尝试后放弃了。网上搜索资料后,使用了小巧的 acme.sh

acme.sh 使用纯 Shell 脚本写成,而且可以申请新式的 ECC 证书,非常方便使用。

首先下载 acme.sh 源码

$ git clone https://github.com/Neilpang/acme.sh.git
$ cd acme.sh

www.eoitek.com 使用了 RSA/ECC 双证书

$ ./acme.sh --issue -d www.eoitek.com -w /home/eoi/eoi-portal
$ ./acme.sh --issue -d www.eoitek.com -w /home/eoi/eoi-portal --keylength ec-256

未完待续

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

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

相关文章

《社交网站界面设计(原书第2版)》——2.11 提问

2.11 提问 人们对话或者交谈时最常见的形式就是一问一答&#xff08;图2-10和图2-11&#xff09;。最早的邮件列表、Usenet和Gopher&#xff0c;以及常见问题列表&#xff08;FAQs&#xff09;都是通过收集大众的智慧或一些权威人士的答案来回答人们的问题。 人们自然会有疑问…

要分析数据,可以先去这些数据网站找数据

作者&#xff1a;帆软来源&#xff1a;知乎金融财经数据同花顺数据中心&#xff1a;提供股票债券等金融数据和讯数据&#xff1a;提供各种股票、基金、外汇、债券等实时数据&#xff0c;有付费&#xff0c;有免费零壹财经&#xff1a;大大小小的网贷数据、排行榜等金融数据网&a…

利用python爬虫(案例1)--某电影网站的小电影们

学习笔记 前言:此案例中,要求抓取某电影网站内【最新电影栏目】里的电影名称,以及该电影的下载链接,并将这些数据存储在数据库中。 案例(某电影网站数据抓取) 首先,确定要爬取的某电影网站的URL地址 https://www.ygdy8.net/html/gndy/dyzz/index.html 查看网页是否为静…

aes加密算法_令你的文件安全有了新方法AES-256-GCM加密网站免费用

您是否一直在寻找文件安全性的解决方案&#xff1f; 有一个免费的文件加密网站&#xff0c;在这里效果很好。常用的加密技术主要分为两类&#xff1a;接近表示加密和不接近表示加密&#xff0c;AES加密是一种接近表示加密&#xff0c;即使用加密 泄露秘密沟通的关键。 它的全名…

程序员需知的 58 个网站

来源&#xff1a;cnblogs.com/three-fighter/p/13641835.html众所周知&#xff0c;程序员是一个需要不断学习的职业&#xff0c;而幸运的是&#xff0c;在这个互联网时代&#xff0c;知识就在那里&#xff0c;等着我们去获取。作为一个 收藏从未停止&#xff0c;学习从未开始 的…

Django从理论到实战(part55)--将网站上传到GitHub

代码笔记&#xff0c;仅供参考 文章目录上传项目到GitHub创建本地仓库在GitHub上创建仓库项目上传上传项目到GitHub 创建本地仓库 我们在git bash中敲入如下代码。 进入项目目录&#xff1a; cd F:/MyStudio/PythonStudio/goatbishop.project01/Django/PaperManageSystem01初…

基于华为云的Django网站部署

学习笔记&#xff0c;仅供参考&#xff0c;有错必纠 参考自&#xff1a;Xshell远程连接服务器&#xff1b;win10 开启ssh server服务 远程登录 文章目录基于华为云的Django网站部署远程登录华为云XftpXshell远程传输文件在远程主机上开启SSHXshell远程连接服务器(和本博客没啥…

我常用的15个数据源网站

前面介绍过实用的效率小工具&#xff0c;真的帮了我很多忙&#xff0c;这次给小伙伴们再种草一些数据源网站。现在有很多免费的数据可以供使用分析&#xff0c;不过很少有人能找的到&#xff0c;或者没能力找&#xff0c;这就是所谓的信息差吧。其实数据获取分为两方面&#xf…

漫画网站爬虫详解

下面对http://www.svmhz.com/shaonvmanhua/进行爬取&#xff0c;对大神的博客&#xff08;http://www.jianshu.com/p/8b4a589f7980&#xff09;进行详解&#xff1a;根据网页图片查看响应代码&#xff0c;选中√的地方查看源代码的方法&#xff0c;浏览器页面按下F12&#xff0…

几个给人启发的创业型网站

2019独角兽企业重金招聘Python工程师标准>>> http://www.wanshe.cn/ 万社 门票报销收款 http://www.stacyblackman.com/ 一个适合mobile的动画效果实现 http://code.ciaoca.com/jquery/easing/ 移动曲线http://easings.net/zh-cn 可以用来设计mobile应用的设计软…

.NET项目发布网站具体步骤和注意事项

ASP.NET项目发布网站具体步骤 1. 在解决方案管理器中右键项目名称&#xff0c;点击“发布网站”&#xff0c;如图 2. 在发布窗口中选择“文件系统”&#xff0c;然后选择文件路径&#xff08;一般放在wwwroot下&#xff09;&#xff0c;勾选“发布前删除所有现有文件”…

使用百度云服务器BCC搭建网站,过程记录

1.买了个最低端的百度云云服务器&#xff1a;1G内存1核40系统盘&#xff0c;获得一个静态服务IP地址&#xff0c;之前在阿里那边买个一个域名&#xff0c;在百度云备案一下&#xff0c;通过后就可以正常解析&#xff0c;把域名和IP对应起来了&#xff0c;主要目的是熟悉一下整个…

【网站开发】搭建一个属于自己的网站

概述 搭建一个属于自己的网站 1.购买域名 主机屋http://www.zhujiwu.com/ 购买的域名&#xff1a;TechShare.xyz 2.购买虚拟主机&#xff08;空间&#xff09; http://www.zhujiwu.com/vhost/ 4.控制面板&#xff0c;配置虚拟主机 设置FTP密码 5.文件管理 管理方法&#xff1a;…

小黑小波比.搭建个人网站

2019独角兽企业重金招聘Python工程师标准>>> 1.先在花生壳注册一个,然后申请免费域名.或者把自己买的域名搬到花生壳中,然后下载花生壳 http://service.oray.com/question/749.html 这是使用花生壳外网访问 2.设定固定ip, ip地址:这个要自己设定就可以 子网掩码:输入…

hexo的next主题个性化教程:打造炫酷网站

转自 https://www.jianshu.com/p/f054333ac9e6 看到有些next主题的网站很炫酷&#xff0c;那么是怎么配置的呢&#xff1f;接下来我会讲一讲如何实现一些炫酷的效果 主要有以下32种&#xff1a; 在右上角或者左上角实现fork me on github添加RSS添加动态背景实现点击出现桃心效…

利用Certbot工具快速给网站部署Let's Encrypt免费SSL证书

使用https证书的话,强制使用域名 很多商家也都提供免费证书&#xff0c;比如腾讯云提供免费一年GeoTrust DV SSL证书、Lets Encrypt永久免费但需要90天激活一次续约&#xff0c;当然如果要购买证书也不是很贵&#xff0c;有的甚至几十元一年都可以买到。 对于一般的网站&…

Python解答力扣网站题库简单版----第三讲

1041. 困于环中的机器人 题库链接: 1041. 困于环中的机器人. 题干 在无限的平面上&#xff0c;机器人最初位于 (0, 0) 处&#xff0c;面朝北方。机器人可以接受下列三条指令之一&#xff1a; "G"&#xff1a;直走 1 个单位"L"&#xff1a;左转 90 度"…

大型网站系统架构的演化

前言 一个成熟的大型网站&#xff08;如淘宝、京东等&#xff09;的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性&#xff0c;它总是随着用户量的增加&#xff0c;业务功能的扩展逐渐演变完善的&#xff0c;在这个过程中&#xff0c;开发模式、技术架构、设计…

大型高性能网站的十项规则

在我们公司ChinaNetCloud&#xff0c;见 过多种不同类型的网站和系统&#xff0c;有好也有差。其中有些系统拥有良好的服务器/网络架构&#xff0c;并且进行了合理的调整和监控 &#xff1b;然而一般的系统都会有安全和性能上的 问题&#xff0c;不能良好运行&#xff0c;也无法…

网站第三方评论对比

1.网站为什么需要评论系统 博客或cms系统&#xff0c;一般都是有内容和评论两部分组成。评论可以增加博主与用户之间的交流互动&#xff0c;也是博主一对多的传达自己想法和观点的交流平台。所以除了社区平台外&#xff0c;评论也成为一般博客和cms系统必备功能。 大型网站本身…