Ssl

讓我們用 lighttpd 和 wordpress 加密

  • January 22, 2021

我正在嘗試let's encrypt使用certbot並且正在lighttpd使用CentOS 6

所以這是我主機的完整 conf 文件

$SERVER["socket"] == ":443" {
 ssl.engine = "enable"
 ssl.pemfile = "/etc/letsencrypt/live/mysite.com/web.pem"
 ssl.ca-file = "/etc/letsencrypt/live/mysite.com/chain.pem"
 server.name = "mysite.com"
 server.document-root = "/home/mysite/public_html"
 server.errorlog = "/var/log/lighttpd/mysite.com_error.log"
 accesslog.filename = "/var/log/lighttpd/mysite.com_access.log"
 ssl.cipher-list = "ECDHE-RSA-CHACHA20-POLY1305 ECDHE-ECDSA-CHACHA20-POLY1305 AES128+EECDH:AES128+EDH:!aNULL:!eNULL"
 ssl.honor-cipher-order = "enable"
 ssl.disable-client-renegotiation = "enable"
 ssl.use-sslv2= "disable"
 ssl.use-sslv3 = "disable"
}

$HTTP["scheme"] == "http" {
 $HTTP["host"] =~ "^(www.)?mysite.com$" {
   server_name = "mysite.com"

   server.document-root = "/home/mysite/public_html"
   accesslog.filename = "/home/mysite/logs/access.log"

   fastcgi.server = ( ".php" =>
     ( "localhost" =>
       (
           "socket" => "/var/run/lighttpd/php-fpm.socket.mysite"
       )
     )
   )

   url.rewrite-once = (

     # Exclude some directories from rewriting
     "^/(\.well-known|wp-admin|wp-includes|wp-content|phpmyadmin)/(.*)" => "$0",

     # Exclude .php files at root from rewriting
     "^/(.*.php)" => "$0",

     # Handle search correctly
     "^/(.*)?(?s=)(.*)$" => "/search/$3",

     # Handle permalinks and feeds
     "^/(.*)$" => "/index.php/$1",

     "^/?$" => "/index.php",

   )


   alias.url = ("/phpmyadmin" => "/usr/share/phpmyadmin/")

 }
}

所以我遇到的第一個問題是,當我嘗試訪問時,https:// mysite.com我得到的內容沒有圖像和样式,所以這是一個 url 重寫問題,但我沒有看到 https 已啟用。仍然從瀏覽器收到我的網站不安全的警告。

第二個問題是當我添加url.redirect = (".*" => "https://%0$0")我得到太多重定向錯誤。

所以我很困惑。我認為問題可能與重寫有關,但奇怪的是我什至沒有啟用 https。

certbotPS 是的,在這一切之前,我收到了成功的消息。

解決方案只是安裝 WP 外掛,它將我所有指向圖像和样式的 http 連結轉換為 https,現在它正在工作。@mrkoopie 的回答幫助我以這種方式思考解決方案,所以我接受了它。

好消息是,如果您在通過 HTTPS 訪問網站時沒有出現證書錯誤,那麼您的伺服器配置正確。壞消息是您的網站配置不正確。

發生的情況是 HTML 內容是通過 HTTPS 載入的。到目前為止,一切都很好而且很安全。但問題是你的 HTML 內容所引用的對象,例如圖像、css 和 js,是用 HTTP 而不是 HTTPS 來引用的。這很糟糕,因為當 HTML 程式碼通過 HTTPS 載入時,瀏覽器不會下載任何未加密的文件。

要解決此問題,請確保您的網站使用 HTTPS 引用每個文件。在 WordPress 中,這可以很容易地完成,但是您沒有提供您正在使用的系統,並且對於每個系統,這都是不同的。

那麼,當 HTML 程式碼通過 HTTPS 載入時,為什麼通過 HTTP 載入對像不好呢?好吧,您使用 HTTPS 的事實意味著您想要安全地載入您的內容。主要目標是沒有人可以更改或查看內容。如果您通過 HTTP 載入任何對象,它很容易受到惡意注入的攻擊,並且任何人都可以看到正在載入的內容(假設他們可以獲取您的流量)。由於這大大降低了安全性,當通過 HTTPS 載入 HTML 內容時,瀏覽器會簡單地忽略 HTTP 引用的任何對象。將伺服器配置為將 http 流量重定向到 https 將不起作用,因為瀏覽器無論如何都不會嘗試載入對象。

希望這可以幫助。

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