# Nginx 使用 openSSL 裝憑證大全 (ubuntu)
###### tags: `Nginx` `openSSL`
### 憑證與私鑰
首先需要**兩**個檔案:憑證與私鑰(沒有的話叫IT生給你)
這兩個檔案是純文字檔也沒關係
反正副檔名手動改一下 憑證.crt 私鑰.key
名字自己亂取也沒差XD
- 憑證內容大概長這樣 BEGIN CERTIFICATE開頭
```
-----BEGIN CERTIFICATE-----
MIIHlwSBN6QRVkCz+QrS6Ewbyw...
一大串像亂碼的東西
-----END CERTIFICATE-----
```
- 私鑰內容大概長這樣 BEGIN RSA PRIVATE KEY 開頭
```
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAvo/sV0zRmtwMH...
一大串像亂碼的東西
-----END RSA PRIVATE KEY-----
```
如何取得(Cloudflare)
登入 Cloudflare Dashboard
點進你的網域 → 點「SSL/TLS」→「Origin Server」
點「Create Certificate」
選項:
Private Key type: RSA 2048
Certificate Validity: 建議選 15 years
Hostnames: your.domain.com 或 *.your.domain.com
完成後會顯示兩段:
Origin Certificate(你存成 server.crt 或 origin.pem)
Private Key(你存成 server.key)
⚠️ Cloudflare Origin Certificate 不被瀏覽器信任,但非常適合伺服器後端使用(例如 Traefik 使用在 websecure 的 entrypoint 上)
---
### 安裝openSSL
- 安裝指令
``` command
sudo apt-get install openssl
sudo apt-get install libssl-dev
```
- 這邊應該沒有問題,也很多教學可以參考,這邊給參考
- https://fedingo.com/how-to-install-openssl-in-ubuntu/
---
### 檢查私鑰配對
- 看 server.crt
``` command
openssl x509 -noout -modulus -in server.crt | openssl md5
```
結果

- 看 server.key
``` command
openssl rsa -noout -modulus -in server.key | openssl md5
```
結果

**兩者一樣就是對的,不一樣無法執行喔**
---
### 合併多個憑證
- 合併 server.cer與root.cer與use.cer 存成server.crt
``` command
cat server.cer root.cer uca.cer >> server.crt
```
**注意要把私鑰配對的到的放在第一個輸入**
範例中server.cer跟私鑰是配對的所以是接在cat後第一個
---
### 加入憑證到Nginx conf
- 把憑證加入conf檔案
不知道什麼是 conf檔的可以先看這個教學
https://ithelp.ithome.com.tw/articles/10241354
``` command
server {
listen 80 default_server;
listen [::]:80 default_server;
# SSL configuration
# 用443 port做hppts監聽
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
#指定你的server.crt與server.key路徑
ssl_certificate ./cert/server.crt;
ssl_certificate_key cert/server.key;
location /{
proxy_pass http://你的IP;
proxy_set_header Host $host;
# 在 proxy request 時保留 client 的 header
}
```
最後重啟你的網站,就可以使用https囉!