让我们为同一个域,多个实例

时间:2016-04-16 03:38:08

标签: ssl ssl-certificate lets-encrypt

我已经在域实例(在Ubuntu 14.4上)成功安装了Let加密SSL证书,但我现在想在同一域的另一个虚拟实例上安装相同的证书。

问题:对于同一个域的多个虚拟实例,我应该从最初的初始版本(使用Let的加密工具)复制证书,还是有另一种更好的方法?

我想你无法查询我们的加密新证书,否则它将使第一个证书无效。

我目前正在分享有效的证书。

2 个答案:

答案 0 :(得分:0)

从对SSL / TLS证书的共同理解的角度来看,我发现这个问题非常有趣。我个人认为在多台计算机或虚拟实例上共享相同的SSL / TLS证书没有一般问题。唯一的问题可能只存在于证书的某些属性中,例如证书的主题备用名称(DNS名称)(我的意思是类似的选项)。

rfc2818的部分3.1(服务器标识):

  

如果客户有关于预期身份的外部信息   服务器,主机名检查可以省略。 (例如,客户   可能正在连接到地址和主机名是动态的机器   但客户端知道服务器将提供的证书。)

     

...

     

如果存在类型为dNSName的subjectAltName扩展名,则为   必须用作身份。否则,(最具体)共同   必须使用证书的“主题”字段中的名称字段。   虽然使用通用名称是现有的做法,但确实如此   不推荐使用,并鼓励认证机构使用   而是dNSName。

唯一的问题是Let's Encrypt似乎还不支持通配符证书(参见FAQ)。我不确定限制是否仍然存在,你真的不能用主题备用名称(``)创建Let的加密,如DNS名称= www.yourdomain.com和DNS名称= * .youdomain.com。因此,您问题的确切答案可能取决于证书属性。

如果您对两台服务器使用相同的证书,则可能会对使用TLS的会话缓存产生一些额外的问题,这会提高TLS的性能,并且客户端和服务器都可以使用相同的会话ID,从而改善了TLS的表现。您应该描述您使用的确切方案,以确切地考虑您是否可能在会话ID中遇到一些问题。

答案 1 :(得分:0)

是的,这是可能的。至少有两个选择:

  • 在手动模式下运行certbot

    ./certbot-auto certonly --manual -d example.com
    

    在这种情况下,certbot需要从.well-known/acme-challenge/提供随机文件,例如:

    http://example.com/.well-known/acme-challenge/-Y5pUBNKdx5GKSloP3RifHzUW3NT9xt1UAloNkHz7wc
    

    现在,您可以将质询文件分发到所有服务器,或者从所有站点创建重写到单个质询服务器:

    rewrite ^/.well-known/acme-challenge/(.*)$ http://acme.example.com/$1 redirect;
    
    应该从单个服务器提供

    acme.example.com,其中root指向/tmp/certbot/public_html/(或者您将存储受挑战文件的任何位置)。

    请查看hooks in certbot manual以编写此过程的脚本。

  • 使用DNS质询。在这种情况下,系统会要求您为TXT域名的DNS添加example.com条记录:

    _acme-challenge.example.com. 300 IN TXT "gfj9Xq...Rg85nM"
    

    同样,您可以自动执行此using hooks --manual-auth-hook--manual-cleanup-hook