想讓你的網站更安全,並且被瀏覽器信任?在這篇詳細的教程中,我會一步步教你如何在Ubuntu系統上使用OpenSSL生成自簽名證書,然後透過Let's Encrypt獲取一個讓瀏覽器信任的證書。即使你是新手也不用擔心,跟著我來,一步步就能搞定!
步驟1:安裝OpenSSL和Certbot
首先,我們需要安裝OpenSSL和Certbot。這兩個工具是必備的,所以開啟終端,輸入以下命令:
sudo apt-get update sudo apt-get install openssl certbot
這兩條命令會更新你的軟體包列表並安裝OpenSSL和Certbot。
步驟2:生成自簽名證書
接下來,我們要生成一個自簽名證書。首先,進入一個工作目錄,比如 /etc/ssl/private
:
cd /etc/ssl/private
然後執行下面的命令來生成自簽名證書:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mydomain.key -out mydomain.crt
你會被提示輸入一些資訊,比如:
Country Name (2 letter code) [AU]: 輸入兩位數的國家程式碼,比如CN(中國)。
State or Province Name (full name) [Some-State]: 輸入省份的全名,比如Beijing。
Locality Name (eg, city) []: 輸入城市名稱,比如Beijing。
Organization Name (eg, company) [Internet Widgits Pty Ltd]: 輸入公司名稱。
Organizational Unit Name (eg, section) []: 輸入部門名稱。
Common Name (e.g. server FQDN or YOUR name) []: 輸入域名,比如yourdomain.com。
Email Address []: 輸入電子郵件地址。
完成後,你會得到一個私鑰檔案 mydomain.key
和一個自簽名證書 mydomain.crt
。
步驟3:獲取Let's Encrypt證書
接下來,透過Certbot獲取Let's Encrypt證書。執行以下命令:
sudo certbot certonly --standalone -d yourdomain.com
Certbot會啟動一個臨時的Web伺服器來進行域名驗證。確保你的防火牆允許HTTP和HTTPS流量。
步驟4:配置Apache Web伺服器
現在,我們需要配置Apache Web伺服器來使用這些證書。首先,進入Apache的站點可用配置資料夾:
cd /etc/apache2/sites-available
然後開啟預設配置檔案:
sudo nano 000-default.conf
在檔案中新增以下內容:
<VirtualHost *:443> ServerName yourdomain.com SSLEngine on SSLCertificateFile /etc/letsencrypt/live/yourdomain.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain.com/privkey.pem DocumentRoot /var/www/html </VirtualHost>
儲存並關閉檔案,按 Ctrl+X
,然後按 Y
,最後按 Enter
。
啟用SSL模組並重新載入Apache配置:
sudo a2enmod ssl sudo systemctl restart apache2
步驟5:配置Nginx Web伺服器
如果你用的是Nginx,我們也需要進行相應的配置。首先,進入Nginx的站點可用配置資料夾:
cd /etc/nginx/sites-available
然後開啟預設配置檔案:
sudo nano default
在檔案中新增以下內容:
server { listen 443 ssl; server_name yourdomain.com; ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem; location / { root /var/www/html; index index.html; } }
儲存並關閉檔案,按 Ctrl+X
,然後按 Y
,最後按 Enter
。
重新載入Nginx配置:
sudo systemctl restart nginx
步驟6:設定自動更新
Let's Encrypt證書的有效期只有90天,所以我們需要設定自動更新。首先,測試Certbot的自動更新功能:
sudo certbot renew --dry-run
如果測試成功,我們可以將其新增到cron作業中,這樣就能自動更新證書了。編輯crontab檔案:
sudo crontab -e
在crontab檔案中新增以下行:
0 0 * * * /usr/bin/certbot renew --quiet
這行命令會每天午夜檢查並自動更新證書。
總結
透過以上詳細步驟,你已經成功使用OpenSSL生成了自簽名證書,並透過Let's Encrypt獲取了一個讓瀏覽器信任的證書。確保定期更新證書以保持網站的安全性。如果你有任何問題,歡迎在評論區留言。希望這篇教程對你有所幫助!