AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 842387
Accepted
Journeyman Geek
Journeyman Geek
Asked: 2017-04-04 19:56:19 +0800 CST2017-04-04 19:56:19 +0800 CST 2017-04-04 19:56:19 +0800 CST

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

  • 772

我正在尝试从头开始在 lighttpd 上设置letsencrypt。我目前在 16.10 xenial 上运行 lighttpd,并希望将现有站点从 http 转移到 https。我知道 Apache 和 ngnix 有一个自动设置过程,但我不愿意把东西移过来。我有六个主机名,在一对使用虚拟主机托管的域上,每个主机都有单独的块。

我该怎么做?

lighttpd
  • 2 2 个回答
  • 1698 Views

2 个回答

  • Voted
  1. Best Answer
    Journeyman Geek
    2017-04-04T19:56:19+08:002017-04-04T19:56:19+08:00

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

    您可能希望根据自己的需要做一些不同的事情。在这种情况下,我没有做一些人们包括在内的事情,还有一些事情是可选的。

    我从这个指南开始,然后大相径庭

    如果您想生成自己的 ssl.dh 文件,请立即执行。它是可选的,需要一段时间

    cd /etc/ssl/certs

    然后

    openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096很慢,有点多余 openssl dhparam -dsaparam -out etc/ssl/certs/dhparam.pem,但速度要快得多

    接下来,按照说明安装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 的主机都将使用这些证书。它是一个最小可行的测试集。

    启动 lig​​httpd 并进行测试。

    现在,如果您是认真的,您可能需要更多设置,例如使用我们讨论过的 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 是,你应该很好。

    • 1
  2. Stefan
    2017-04-04T21:39:16+08:002017-04-04T21:39:16+08:00

    大多数工具都支持“哑网络服务器”模式,在这种模式下,它们提供需要由您的网络服务器在/.well-known/acme-challenge/目录中提供服务的文件。

    也可以使用某种动态语言(lua、php、...:连接请求文件名'.'和公钥哈希)生成该内容

    • 1

相关问题

  • 在 Apache、LightTPD 和 Nginx Web 服务器上提供 PHP 5.x 应用程序的现状?

  • 如何在重新启动时在 /tmp 中重新创建目录?

  • 为这个堆栈推荐书籍/资源:linux、lighttpd、postgres、webpy

  • 哪个最适合 Django?Lighttpd 还是 Nginx?或者也许是别的什么?[关闭]

  • 降低 lighttpd 响应时间

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve