在Debian上部署Nginx SSL的過程可以分為以下幾個步驟:
首先,確保你的系統上已經安裝了OpenSSL。如果沒有安裝,可以使用以下命令進行安裝:
sudo apt-get update
sudo apt-get install openssl -y
接下來,生成一個2048位的RSA私鑰和一個CSR。私鑰和CSR的名稱通常與你的域名相同。
openssl genpkey -algorithm rsa -out private.key -aes256
openssl req -new -key private.key -out csr.csr
在生成CSR的過程中,系統會提示你輸入一些信息,如國家、省份、城市、組織和姓名等。
使用私鑰和CSR生成自簽證書。證書的有效期默認為365天。
openssl x509 -req -days 365 -in csr.csr -signkey private.key -out certificate.crt
你可以使用以下命令來驗證生成的證書內容:
openssl x509 -in certificate.crt -text -noout
將生成的證書和私鑰文件放置在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
替換為實際的證書和私鑰文件的路徑。
為了確保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
acme.sh
:location /.well-known/acme-challenge/ {
alias /var/www/acme/.well-known/acme-challenge/;
}
server {
listen 80;
listen [::]:80;
server_name example.com;
include /etc/acme/acme.conf;
location / {
return 301 https://$server_name$request_uri;
}
}
將example.com
替換為你的實際域名。
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
ssl_certificate /etc/acme/certs/example.com_ecc/fullchain.cer;
ssl_certificate_key /etc/acme/certs/example.com_ecc/example.com.key;
0 1 * * * sudo nginx -s reload
以上就是在Debian系統上部署Nginx SSL的基本策略。通過這些步驟,你可以為你的網站啟用HTTPS,并確保SSL證書在到期前自動續簽。