摘要:确保预先安装了官方的包申请证书官方的在系统上有各种依赖问题,各种尝试后放弃了。网上搜索资料后,使用了小巧的。
我大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未完待续
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/40560.html
摘要:甚至和百度的搜索结果也正在给予的网站更高的排名和优先收录权。由于预设的解码器是,所以就不能识别中文。那理解了这个错误原因后,我这边首先想到的就是网站的配置文件中是否含有中文。打开一看,确实存在中文注释。 相关知识 HTTP/HTTPS 是什么? 简单来说,HTTP 是一个传输网页内容的协议,比如我们浏览一个网页,网页上的文字、图片、 CSS 、 JS 等文件都是通过 HTTP 协议传输...
摘要:在上使用免费的如果你使用来做负载均衡,在上可以很方便的使用。提供期限为三个月的免费证书,到期之后需要,官方还提供自动的工具是一个自动申请和续期证书的工具。在官网可以找到各种和服务器下的安装方法。常见的和安装起来十分方便。 在Amazon Linux 上 使用 Lets encrypt 免费的SSL 如果你使用ELB来做负载均衡,在AWS上可以很方便的使用SSL。如果不使用ELB就需要自...
摘要:为了推广协议,电子前哨基金会成立了,提供免费证书。部署,包含申请域名部署应用,并开启服务。安装使用获取证书对于,使用的插件获取。 为了推广HTTPS协议,电子前哨基金会EFF成立了 Lets Encrypt,提供免费证书。 Lets Encrypt一个于2015年三季度推出的数字证书认证机构,将通过旨在消除当前手动创建和安装证书的复杂过程的自动化流程,为安全网站提供免费的SSL/TLS...
阅读 2732·2023-04-25 14:15
阅读 2682·2021-11-04 16:11
阅读 3383·2021-10-14 09:42
阅读 434·2019-08-30 15:52
阅读 2817·2019-08-30 14:03
阅读 3534·2019-08-30 13:00
阅读 2103·2019-08-26 11:40
阅读 3299·2019-08-26 10:25