如何使用ubuntu 16.04在lighttpd服务器上设置多个域的letsencrypt?

前端之家收集整理的这篇文章主要介绍了如何使用ubuntu 16.04在lighttpd服务器上设置多个域的letsencrypt?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正试图从头开始在lighttpd上设置letsencrypt.我目前在16.10 xenial上运行lighttpd,并希望将现有站点从http移到https.我知道Apache和ngnix有一个自动设置过程,但我不愿意将事情移交过来.我有六个主机名,在一对使用虚拟主机托管的域中,每个主机都有单独的块.

我该怎么办?

它需要一些试验和错误,并将来自多个来源的比特放在一起.

您可能希望根据您的需要做一些不同的事情.在这种情况下,我没有做过人们所包含的一些事情,有些事情是可选的.

我从这个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是,并且你应该是好的.

原文链接:https://www.f2er.com/ubuntu/347531.html

猜你在找的Ubuntu相关文章