摘要:確保預先安裝了官方的包申請證書官方的在系統上有各種依賴問題,各種嘗試后放棄了。網上搜索資料后,使用了小巧的。
我大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://specialneedsforspecialkids.com/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
閱讀 2684·2021-11-04 16:11
閱讀 3385·2021-10-14 09:42
閱讀 434·2019-08-30 15:52
閱讀 2818·2019-08-30 14:03
閱讀 3535·2019-08-30 13:00
閱讀 2104·2019-08-26 11:40
閱讀 3300·2019-08-26 10:25