惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog RSS Feed
Jina AI
Jina AI
雷峰网
雷峰网
Blog — PlanetScale
Blog — PlanetScale
Hugging Face - Blog
Hugging Face - Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
博客园 - 司徒正美
罗磊的独立博客
J
Java Code Geeks
Engineering at Meta
Engineering at Meta
WordPress大学
WordPress大学
Vercel News
Vercel News
A
About on SuperTechFans
I
InfoQ
D
DataBreaches.Net
爱范儿
爱范儿
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
U
Unit 42
aimingoo的专栏
aimingoo的专栏
宝玉的分享
宝玉的分享
P
Proofpoint News Feed
Microsoft Azure Blog
Microsoft Azure Blog
美团技术团队

Nic Lin's Blog

謝明真 - 高效領導力的課後筆記 NFT 開發實戰!基礎智能合約入門 (3) NFT 開發實戰!基礎智能合約入門 (2) NFT 開發實戰!基礎智能合約入門 (1) 如何自我檢測 log4j CVE 漏洞 Rails 如何在資料寫入時記錄來源 IP 位置 如何經營工程師 Youtube 頻道 - Part 8 營收篇 如何經營工程師 Youtube 頻道 - Part 7 酸民文化篇 如何經營工程師 Youtube 頻道 - Part 5 設備器材篇 如何經營工程師 Youtube 頻道 - Part 4 後製剪輯篇 如何經營工程師 Youtube 頻道 - Part 3 文案企劃篇 如何經營工程師 Youtube 頻道 - Part 2 設備器材篇 如何經營工程師 Youtube 頻道 - Part 1 制訂頻道方向篇 如何經營工程師 Youtube 頻道 - Part 0 Rails 中避免 race condition 的最佳實踐(二) Rails 中避免 race condition 的最佳實踐(一) 10 分鐘整合 google sheet 做自動化開發功能週報 經營 Side Project 300 天所帶來的收穫及挑戰 我的 Youtube 影片製作流程 API 設計時必須注意的 HTTP header 底線問題 如何提升你的程式可讀性之實務技巧(三) 如何提升你的程式可讀性之實務技巧(二) 如何提升你的程式可讀性之實務技巧(一) Ruby 中使用 freeze 優化效能的時機 避免 React 中的 useEffect 無限 render 在 Rails 內輕量使用 Vue Component 的最佳實踐 如何在區域網路用 Docker 架設有 SSL 的 Gitlab 從被問到問人,那些我常問的面試問題 [Rails] 如何漂亮寫出可維護的 query (Maintainable Rails Query) 在已知長度情況下優化 slice 的性能
讓網站免費擁有 HTTPS 憑證,申請 Let’s Encrypt 並自動更新
Nic Lin · 2018-08-04 · via Nic Lin's Blog

現在連 Google chrome 都會把 http 標記為不安全了,想當然爾,HTTPS 加密連線的重要性不言可喻了

這邊就筆記一下如何在自己的機器上,自動 renew Let’s Encrypt 的免費憑證吧

安裝方式

在你的 VPS 機器上

$ mkdir -p /etc/dehydrated/
$ wget https://raw.githubusercontent.com/lukas2511/dehydrated/master/dehydrated -O /etc/dehydrated/dehydrated
$ chmod 755 /etc/dehydrated/dehydrated

建立設定檔

$ echo "WELLKNOWN=/var/www/dehydrated" > /etc/dehydrated/config 
$ mkdir -p /var/www/dehydrated

Nginx 設定,先在 80 port 的 server section 寫入底下設定,因為要從 http 進行驗證

location /.well-known/acme-challenge/ {
  alias /var/www/dehydrated/;
}

第一次使用要先同意聲明,先輸入

/etc/dehydrated/dehydrated --register --accept-terms

接著透過 dehydrated 指令產生 SSL 設定檔案

/etc/dehydrated/dehydrated -c -d niclin.tw

應該會看到 log

# INFO: Using main config file /etc/dehydrated/config
Processing niclin.tw
 + Signing domains...
 + Generating private key...
 + Generating signing request...
 + Requesting challenge for niclin.tw...
 + Responding to challenge for niclin.tw...
 + Challenge is valid!
 + Requesting certificate...
 + Checking certificate...
 + Done!
 + Creating fullchain.pem...
 + Done!

再將 nginx 做最後設定

server {
  # don't forget to tell on which port this server listens
  listen 80;
 
  # listen on the www host
  server_name niclin.tw;
 
  # and redirect to the non-www host (declared below)
  return 301 https://niclin.tw$request_uri;
}
 
server {
  listen 443 ssl http2;
  server_name niclin.tw;
 
  location /.well-known/acme-challenge/ {
    alias /var/www/dehydrated/;
  }
 
  ssl_certificate /etc/dehydrated/certs/niclin.tw//fullchain.pem;
  ssl_certificate_key /etc/dehydrated/certs/niclin.tw/privkey.pem;
}

上面是將 80 port 自動轉到 https,如果下次要重新 renew 的時候才不會又要打開 80 port 一次。

自動更新

將指令放在 /etc/cron.weekly 內執行

#!/bin/bash
export PATH=/usr/sbin:/usr/bin:/bin:"${PATH}"
sleep $(expr $(printf "\%d" "0x$(hostname | md5sum | cut -c 1-8)") \% 86400); ( /etc/dehydrated/dehydrated -c -d niclin.tw; service nginx reload ) > /tmp/dehydrated-niclin.tw.log 2>&1

參考來源