国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

用 Nginx 基于 Let's Engypt 免費證書打造快速安全的 HTTPS 網站

lidashuang / 2590人閱讀

摘要:確保預先安裝了官方的包申請證書官方的在系統上有各種依賴問題,各種嘗試后放棄了。網上搜索資料后,使用了小巧的。

我大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

相關文章

  • 通過 Certbot 安裝 Let&#039;s Encrypt 證書,來實現全站 HTTPS

    摘要:甚至和百度的搜索結果也正在給予的網站更高的排名和優先收錄權。由于預設的解碼器是,所以就不能識別中文。那理解了這個錯誤原因后,我這邊首先想到的就是網站的配置文件中是否含有中文。打開一看,確實存在中文注釋。 相關知識 HTTP/HTTPS 是什么? 簡單來說,HTTP 是一個傳輸網頁內容的協議,比如我們瀏覽一個網頁,網頁上的文字、圖片、 CSS 、 JS 等文件都是通過 HTTP 協議傳輸...

    Lsnsh 評論0 收藏0
  • 在Amazon Linux 上使 Let&#039;s encrypt 免費SSL

    摘要:在上使用免費的如果你使用來做負載均衡,在上可以很方便的使用。提供期限為三個月的免費證書,到期之后需要,官方還提供自動的工具是一個自動申請和續期證書的工具。在官網可以找到各種和服務器下的安裝方法。常見的和安裝起來十分方便。 在Amazon Linux 上 使用 Lets encrypt 免費的SSL 如果你使用ELB來做負載均衡,在AWS上可以很方便的使用SSL。如果不使用ELB就需要自...

    coolpail 評論0 收藏0
  • 使 Let&#039;s Encrypt 證書部署 HTTPS

    摘要:為了推廣協議,電子前哨基金會成立了,提供免費證書。部署,包含申請域名部署應用,并開啟服務。安裝使用獲取證書對于,使用的插件獲取。 為了推廣HTTPS協議,電子前哨基金會EFF成立了 Lets Encrypt,提供免費證書。 Lets Encrypt一個于2015年三季度推出的數字證書認證機構,將通過旨在消除當前手動創建和安裝證書的復雜過程的自動化流程,為安全網站提供免費的SSL/TLS...

    he_xd 評論0 收藏0

發表評論

0條評論

lidashuang

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<