Ubuntu

在 Ubuntu 伺服器上保存 SSL 證書和私鑰的最佳位置?

  • February 10, 2022

在 Ubuntu 上,用於簽署證書(供 nginx 使用)的私鑰的最佳位置似乎是/etc/ssl/private/

這個答案補充說證書應該進入,/etc/ssl/certs/但這似乎是一個不安全的地方。.crt文件需要保持安全還是被認為是公開的?

.crt 文件被發送到所有連接的地方;它是公開的。(chown root:rootchmod 644)

添加到私鑰位置;確保你妥善保護它,並把它放在那裡。(chown root:ssl-certchmod 640)

只要您正確保護您的私鑰文件,您將它們放在哪裡並不重要。公共證書是公開的;不需要保護 - 伺服器權限或其他。

為了擴展答案,我不使用預設位置/etc/ssl
由於備份和其他原因,我更容易將所有我的東西放在一個單獨的區域中。

對於 Apache SSL,我將我的保留/etc/apache2/ssl/private/etc/apache2.

範例設置

*這篇文章面向 Ubuntu (Debian) + Apache,但應該適用於大多數係統。

只需在給定的配置(apache/nginx/etc)中應用權限並更新位置/路徑。*

此答案還假設您沒有使用 LetsEncrypt/Certbot 或某些自動 SSL 服務。您已購買或創建 SSL 證書並已獲取文件包。

如果 SSL密鑰文件得到正確保護(目錄和文件),你會沒事的。注意筆記!

創建目錄:

sudo mkdir /etc/apache2/ssl
sudo mkdir /etc/apache2/ssl/private
sudo chmod 755 /etc/apache2/ssl
sudo chmod 710 /etc/apache2/ssl/private

注意:在 Ubuntu 下
chmod 710支持組。ssl-cert
(見評論)
設置權限也可以正常工作700/etc/apache2/ssl/private

放置 SSL 文件:

公共SSL 證書和中間證書放入:(
/etc/apache2/ssl這些是*.crt文件,通常)

將相應的私有SSL 密鑰放入:(

/etc/apache2/ssl/private這些是*.key文件,或者沒有副檔名,通常)

注意:LetsEncrypt/Certbot 對所有 SSL 文件(公共、中間鍊和私有)使用“.pem”副檔名。但是,您不需要移動(或保護)這些文件。它們已經到位並受到保護。只需在您的 Apache ‘.conf’ 中直接呼叫它們即可。

集所有者:

注意 - 如果您沒有ssl-cert組,請跳過第二行:

sudo chown -R root:root /etc/apache2/ssl/
sudo chown -R root:ssl-cert /etc/apache2/ssl/private/

設置權限:

公共證書

sudo chmod 644 /etc/apache2/ssl/*.crt

私鑰

sudo chmod 640 /etc/apache2/ssl/private/*.key

注意:
由於 Ubuntu ssl-cert 組,私鑰的組權限設置為 READ (640)。使用“600”(僅限所有者控制)是私鑰的正常權限,也可以正常工作。

啟用 Apache SSL 模組

sudo a2enmod ssl

編輯任何 Apache 站點文件並啟用

(見最後一段)*

sudo nano /etc/apache/sites-available/mysiteexample-ssl.conf
sudo a2ensite mysiteexample-ssl
#             ^^^^^^^^^^^^^^^^^ <-Substitute your ".conf" filename(s)

重啟 Apache2 服務

sudo service apache2 restart

或者

sudo systemctl restart apache2.service

完畢。測試您的新 SSL 站點。

  • 這再次超出了問題範圍,但您可以複製預設的 Apache SSL 站點配置文件sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/mysiteexample-ssl.conf( . 它通常指向自簽名 SSL 證書+密鑰(snakeoil)、CA 捆綁包以及用於給定 SSL 站點的通用指令。

複製後,只需編輯新的 .conf 文件並根據需要使用上面的新資訊/路徑添加/刪除/更新它,然後執行sudo a2ensite mysiteexample-ssl以啟用它。重新載入/重新啟動 apache2。測試。

引用自:https://serverfault.com/questions/259302