讓我們用 lighttpd 和 wordpress 加密
我正在嘗試
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。
certbot
PS 是的,在這一切之前,我收到了成功的消息。解決方案只是安裝 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 將不起作用,因為瀏覽器無論如何都不會嘗試載入對象。
希望這可以幫助。