閱讀1000 返回首頁    go 微軟 go windows


OpenSSL 在 Apache 和 Dovecot 下的使用(一)

創建你的證書

Debian/Ubuntu/Mint 會在 /etc/ssl 中存儲私鑰和證書的符號鏈接。係統自帶的證書保存在/usr/share/ca-certificates 中。你安裝或創建的證書在 /usr/local/share/ca-certificates/中。

這個例子是對 Debian 而言。創建私鑰和公用證書,將證書轉換為正確的格式,並將其符號鏈接到正確的目錄:


  1. $ sudo openssl req -x509 -days 365 -nodes -newkey rsa:2048 \
  2. -keyout /etc/ssl/private/test-com.key -out \
  3. /usr/local/share/ca-certificates/test-com.crt
  4. Generating a 2048 bit RSA private key
  5. .......+++
  6. ......................................+++
  7. writing new private key to '/etc/ssl/private/test-com.key'
  8. -----
  9. You are about to be asked to enter information that will
  10. be incorporated into your certificate request.
  11. What you are about to enter is what is called a Distinguished
  12. Name or a DN. There are quite a few fields but you can leave some blank
  13. For some fields there will be a default value,
  14. If you enter '.', the field will be left blank.
  15. -----
  16. Country Name (2 letter code) [AU]:US
  17. State or Province Name (full name) [Some-State]:WA
  18. Locality Name (eg, city) []:Seattle
  19. Organization Name (eg, company) [Internet Widgits Pty Ltd]:Alrac Writing Sweatshop
  20. Organizational Unit Name (eg, section) []:home dungeon
  21. Common Name (e.g. server FQDN or YOUR name) []:www.test.com
  22. Email Address []:admin@test.com
  23. $ sudo update-ca-certificates
  24. Updating certificates in /etc/ssl/certs...
  25. 1 added, 0 removed; done.
  26. Running hooks in /etc/ca-certificates/update.d...
  27. Adding debian:test-com.pem
  28. done.
  29. done.

CentOS/Fedora 使用不同的文件結構,並不使用 update-ca-certificates,使用這個命令:


  1. $ sudo openssl req -x509 -days 365 -nodes -newkey rsa:2048 \
  2. -keyout /etc/httpd/ssl/test-com.key -out \
  3. /etc/httpd/ssl/test-com.crt

最重要的條目是 Common Name,它必須與你的完全限定域名(FQDN)完全匹配。此外其它信息都是任意的。-nodes 用於創建一個無密碼的證書,這是 Apache 所必需的。-days 用於定義過期日期。更新證書是一個麻煩的事情,但這樣應該能夠額外提供一些安全保障。參見 90 天證書有效期的利弊中的討論。

配置 Apache

現在配置 Apache 以使用你的新證書。如果你遵循給初學者看的在 Ubuntu Linux 上使用 Apache:第 2 部分,你所要做的就是修改虛擬主機配置中的 SSLCertificateFile 和 SSLCertificateKeyFile,以指向你的新私鑰和公共證書。來自該教程中的 test.com 示例現在看起來像這樣:


  1. SSLCertificateFile /etc/ssl/certs/test-com.pem
  2. SSLCertificateKeyFile /etc/ssl/private/test-com.key

CentOS 用戶,請參閱在 CentOS wiki 中的在 CentOS 上設置 SSL 加密的 Web 服務器一文。過程是類似的,wiki 會告訴如何處理 SELinux。

測試 Apache SSL

一個簡單的方法是用你的網絡瀏覽器訪問 https://yoursite.com,看看它是否可以正常工作。在第一次這樣做時,你會在你過度保護的 web 瀏覽器中看到可怕的警告說網站是不安全的,因為它使用的是自簽名證書。請忽略你這個敏感的瀏覽器,並單擊屏幕創建永久性例外。 如果你遵循在給初學者看的在 Ubuntu Linux 上使用 Apache:第 2 部分上的示例虛擬主機配置,那麼即使你的網站訪問者嚐試使用純 HTTP,你的網站的所有流量都將強製通過 HTTPS。

一個很好測試方法是使用 OpenSSL。是的,有一個漂亮的命令來測試這些東西。試下這個:


  1. $ openssl s_client -connect www.test.com:443
  2. CONNECTED(00000003)
  3. depth=0 C = US, ST = WA, L = Seattle, O = Alrac Writing Sweatshop,
  4. OU = home dungeon, CN = www.test.com, emailAddress = admin@test.com
  5. verify return:1
  6. ---
  7. Certificate chain
  8. 0 s:/C=US/ST=WA/L=Seattle/O=Alrac Writing Sweatshop/OU=home
  9. dungeon/CN=www.test.com/emailAddress=admin@test.com
  10. i:/C=US/ST=WA/L=Seattle/O=Alrac Writing Sweatshop/OU=home
  11. dungeon/CN=www.test.com/emailAddress=admin@test.com
  12. ---
  13. Server certificate
  14. -----BEGIN CERTIFICATE-----
  15. [...]

這裏輸出了大量的信息。這裏有很多關於 openssl s_client 的有趣信息; 現在足夠我們知道我們的 web 服務器是否使用了正確的 SSL 證書。

創建一個證書簽名請求

如果你決定使用第三方證書頒發機構(CA),那麼就必須創建證書簽名請求(CSR)。你將它發送給你的新 CA,他們將簽署並將其發送給您。他們可能對創建你的 CSR 有自己的要求; 這是如何創建一個新的私鑰和 CSR 的典型示例:


  1. $ openssl req -newkey rsa:2048 -nodes \
  2. -keyout yourdomain.key -out yourdomain.csr

你也可以從一個已經存在的 key 中創建一個 CSR:


  1. $ openssl req -key yourdomain.key \
  2. -new -out domain.csr

原文發布時間為:2017-02-02

本文來自雲棲社區合作夥伴“Linux中國”

最後更新:2017-05-27 09:31:29

  上一篇:go  使用 Ganglia 對 Linux 網格和集群服務器進行實時監控
  下一篇:go  LXD 2.0 係列(六):遠程主機及容器遷移