我该怎么办?
您可能希望根据您的需要做一些不同的事情.在这种情况下,我没有做过人们所包含的一些事情,有些事情是可选的.
我从这个guide开始,并且疯狂地分道扬..
如果要生成自己的ssl.dh文件,请立即执行.它是可选的,需要一段时间
cd / etc / ssl / certs
然后
openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096很慢,和somewhat redundant
openssl dhparam -dsaparam -out etc / ssl / certs / dhparam.pem要快得多
接下来,根据instructions安装letsencrypt的certbot
$sudo add-apt-repository ppa:certbot/certbot $sudo apt-get update $sudo apt-get install certbot
生成您的证书.我选择在一个证书上为“example.com”域中的所有主机申请一个证书,并在自己的证书上拥有“example.org”.
certbot使用您的Web服务器端口,因此首先关闭您的lighttpd实例
生成证书只是一个运行问题
certbot certonly –standalone -d example.org,用于一个域和
certbot certonly –standalone -d example.com -d chat.example.com,用于证书中的多个域(最多20个).
lighttpd期望一个pem文件,而letsencrypt会做一对(最初!)所以,你需要合并它们.转到cd / etc / letsencrypt / live /进入每个文件夹并运行cat privkey.pem cert.pem> ssl.pem中
出于我们的目的,我们假设您有“/etc/letsencrypt/live/chat.example.com/”和“/etc/letsencrypt/live/example.org/”中的文件.
出于测试目的,我们假设您希望将其中一个证书作为默认值,并且您希望保持端口80可用于测试以查看服务器是否以您的更改开始.
添加块读取
$SERVER["socket"] == ":443" { ssl.engine = "enable" ssl.pemfile = "/etc/letsencrypt/live/chat.example.com/ssl.pem" ssl.ca-file = "/etc/letsencrypt/live/chat.example.com/fullchain.pem" }
您可以稍后替换它,并且是最低限度,并允许您与http一起运行https.
没有连接到https的明确设置集的任何主机都将使用这些证书.它是一个可测试的最小可行集.
启动lighttpd并测试.
现在,如果你是认真的,你可能想要更多的设置,比如使用我们谈到的那个ssl.dh设置,你花了两个小时在开始时生成一个dhparam.pem文件.你可以替换你刚刚添加的块像这样的东西 – 这作为整个服务器的默认设置.
$SERVER["socket"] == ":443" { ssl.engine = "enable" ssl.pemfile = "/etc/letsencrypt/live/chat.example.com/ssl.pem" ssl.ca-file = "/etc/letsencrypt/live/chat.example.com/fullchain.pem" ssl.dh-file = "/etc/ssl/certs/jmg2dhparam.pem" ssl.ec-curve = "secp384r1" ssl.honor-cipher-order = "enable" ssl.cipher-list = "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH" ssl.use-compression = "disable" } $HTTP["scheme"] == "http" { # capture vhost name with regex conditiona -> %0 in redirect pattern # must be the most inner block to the redirect rule $HTTP["host"] =~ ".*" { url.redirect = (".*" => "https://%0$0") } }
它使用更完整的设置(根据品味调整)进行HTTPS,并将任何HTTP连接重定向到HTTPS.
如果您希望域具有不同的键集,则可以在主机块中覆盖这些设置.
$HTTP["host"] =~ "(^|\.)example\.org$" { server.document-root = "/var/www/example" server.errorlog = "/var/log/lighttpd/example/error.log" accesslog.filename = "/var/log/lighttpd/example/access.log" server.error-handler-404 = "/e404.PHP" ssl.pemfile = "/etc/letsencrypt/live/example.org/ssl.pem" ssl.ca-file = "/etc/letsencrypt/live/example.org/fullchain.pem" }
重新启动服务器,测试以确保端口80不可连接,并且https是,并且你应该是好的.