切換語言為:簡體

Ubuntu系統中使用OpenSSL生成自簽名證書,並透過Let's Encrypt獲取瀏覽器信任的證書

  • 爱糖宝
  • 2024-09-19
  • 2060
  • 0
  • 0

想讓你的網站更安全,並且被瀏覽器信任?在這篇詳細的教程中,我會一步步教你如何在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獲取了一個讓瀏覽器信任的證書。確保定期更新證書以保持網站的安全性。如果你有任何問題,歡迎在評論區留言。希望這篇教程對你有所幫助!

0則評論

您的電子郵件等資訊不會被公開,以下所有項目均必填

OK! You can skip this field.