让我们用lighttpd和wordpressencryption

我想实现let's encryptcertbot let's encrypt ,而我在CentOS 6上使用lighttpd

所以这是我的主机完整的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")我得到太多的redirect错误。

所以我感到困惑。 我认为问题可能是重写,但奇怪的是我甚至没有启用https。

PS是的,在这之前,我从certbot得到了成功的消息。

解决scheme只是安装WP插件,将所有的HTTP链接到图像和样式到HTTPS,现在它的工作。 @mrkoopie答案帮助我以这种方式思考解决scheme,所以我接受它。

好消息是,如果您通过HTTPS访问网站时没有证书错误,那么您的服务器configuration正确。 坏消息是你的网站configuration不正确。

发生的事情是HTML内容通过HTTPS加载。 到目前为止,这么好,有保障。 但是出现错误的是,HTML内容所引用的对象(例如图像,css和js)是用HTTP而不是HTTPS来引用的。 这是不好的,因为当HTML代码通过HTTPS加载时,浏览器不会下载任何未encryption的文件。

要解决此问题,请确保您的网站使用HTTPS引用每个文件。 在WordPress这可以很容易地完成,但是你没有提供你正在使用的系统,对于每个系统,这是不同的。

那么当HTML代码通过HTTPS加载时,为什么在HTTP上加载对象不好? 那么,您使用HTTPS的事实意味着您想要安全地加载您的内容。 主要目标是没有人可以改变或查看内容。 如果您通过HTTP加载任何对象,那么对于恶意注入,任何人都可以看到正在加载哪些内容(假设他们可以获得stream量)。 由于这大大降低了安全性,当HTML内容通过HTTPS加载时,浏览器会简单地忽略由HTTP引用的任何对象。 将服务器configuration为将httpstream量redirect到https将不起作用,因为浏览器不会尝试加载对象。

希望这可以帮助。