溫馨提示×

Nginx SSL在Debian上的部署策略

小樊
52
2025-03-11 09:42:23
欄目: 云計算

在Debian上部署Nginx SSL的過程可以分為以下幾個步驟:

1. 安裝OpenSSL

首先,確保你的系統上已經安裝了OpenSSL。如果沒有安裝,可以使用以下命令進行安裝:

sudo apt-get update
sudo apt-get install openssl -y

2. 生成私鑰和證書簽名請求(CSR)

接下來,生成一個2048位的RSA私鑰和一個CSR。私鑰和CSR的名稱通常與你的域名相同。

openssl genpkey -algorithm rsa -out private.key -aes256
openssl req -new -key private.key -out csr.csr

在生成CSR的過程中,系統會提示你輸入一些信息,如國家、省份、城市、組織和姓名等。

3. 生成自簽證書

使用私鑰和CSR生成自簽證書。證書的有效期默認為365天。

openssl x509 -req -days 365 -in csr.csr -signkey private.key -out certificate.crt

4. 驗證證書

你可以使用以下命令來驗證生成的證書內容:

openssl x509 -in certificate.crt -text -noout

5. 配置Nginx使用SSL證書

將生成的證書和私鑰文件放置在Nginx的配置目錄中(通常是/etc/nginx)。然后編輯Nginx的配置文件,添加以下內容:

server {
    listen 443 ssl;
    http2 on;
    listen [::]:443 ssl;
    server_name example.com;

    ssl_certificate /path/to/certificate.crt;
    ssl_certificate_key /path/to/private.key;

    # 其他Nginx配置...
}

example.com替換為你的實際域名,并將/path/to/certificate.crt/path/to/private.key替換為實際的證書和私鑰文件的路徑。

6. 自動續簽SSL證書

為了確保SSL證書在到期前自動續簽,可以使用acme.sh腳本。以下是配置步驟:

  • 創建必要的目錄:
mkdir -p /etc/acme/{config,live,certs}
mkdir -p /var/www/acme/.well-known/acme-challenge
  • 修改目錄權限:
chown -R username:username /var/www /etc/acme

username替換為運行acme.sh的用戶名。

  • 克隆acme.sh倉庫:
git clone https://github.com/acmesh-official/acme.sh.git

或者下載并解壓壓縮包。

  • 安裝acme.sh
./acme.sh --install -m your@email.com --home /etc/acme --config-home /etc/acme/config --cert-home /etc/acme/certs

your@email.com替換為你的實際電子郵箱地址。

  • 配置acme.sh自動更新:
/etc/acme/acme.sh --config-home '/etc/acme/config' --upgrade --auto-upgrade
  • 添加Nginx配置給acme.sh
location /.well-known/acme-challenge/ {
    alias /var/www/acme/.well-known/acme-challenge/;
}
  • 修改需要添加SSL證書的域名Nginx配置文件:
server {
    listen 80;
    listen [::]:80;
    server_name example.com;

    include /etc/acme/acme.conf;

    location / {
        return 301 https://$server_name$request_uri;
    }
}

example.com替換為你的實際域名。

  • 重新加載Nginx配置:
sudo nginx -s reload
  • 使用acme.sh申請SSL證書:
/etc/acme/acme.sh --issue --home /etc/acme --config-home /etc/acme/config --cert-home /etc/acme/certs -d example.com -w /var/www/acme --server letsencrypt

example.com替換為你的實際域名。

  • 查看定時任務是否添加成功:
crontab -e

如果沒有相關acme.sh的定時任務,可以手動添加上:

0 1 * * * "/etc/acme/acme.sh" --cron --home "/etc/acme" --config-home "/etc/acme/config" > /dev/null
  • 申請成功后,再次修改對應域名的Nginx配置文件,使其使用最新的SSL證書:
ssl_certificate /etc/acme/certs/example.com_ecc/fullchain.cer;
ssl_certificate_key /etc/acme/certs/example.com_ecc/example.com.key;
  • 添加重新加載Nginx配置文件的定時任務:
0 1 * * * sudo nginx -s reload

以上就是在Debian系統上部署Nginx SSL的基本策略。通過這些步驟,你可以為你的網站啟用HTTPS,并確保SSL證書在到期前自動續簽。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女