Rails 5,使用加密SSL的Heroku – 配置设置时遇到问题

我正在试图弄清楚如何在heroku上使用我的rails应用程序加密。

我尝试了几个似乎旨在帮助这个过程(letsencrypt-plugin)的gem,但已经删除了那些gem推荐的所有安装步骤,因为我无法使其正常工作。

现在,我回过头来尝试理解这里列出的教程:

http://collectiveidea.com/blog/archives/2016/01/12/lets-encrypt-with-a-rails-app-on-heroku/

https://medium.com/should-designers-code/how-to-set-up-ssl-with-lets-encrypt-on-heroku-for-free-266c185630db#.h9vjoxboq

我没有走远。

我正在尝试这个: https : //medium.com/should-designers-code/how-to-set-up-ssl-with-lets-encrypt-on-heroku-for-free-266c185630db#.h9vjoxboq

目前,错误消息说:

Type: unauthorized Detail: The key authorization file from the server did not match this challenge [first random string.second random string] != [#{params[:id]}.ENV["LETS_ENCRYPT_SECOND"]] To fix these errors, please make sure that your domain name was entered correctly and the DNS A record(s) for that domain contain(s) the right IP address. 

我已经在我的application.yml中使用’second random string’保存了LETS_ENCRYPT_SECOND。

我的DNS中没有任何A记录。 我在heroku上托管 – 它不提供任何A记录或IP地址。 我的域名在123-reg注册。

我不明白这部分说明:

mkdir -p /tmp/certbot/public_html/.well-known/acme-challenge

cd / tmp / certbot / public_html

printf“%s”第一个随机字符串。第二个随机字符串> .well-known / acme-challenge / first random string

每台服务器只运行一次:

$(命令-v python2 || command -v python2.7 || command -v python2.6)-c \“import BaseHTTPServer,SimpleHTTPServer; \ s = BaseHTTPServer.HTTPServer((”,80),SimpleHTTPServer.SimpleHTTPRequestHandler) ; \ s.serve_forever()“

我认为它们意味着我需要将上述4个命令中的每个命令放入终端然后我就完成了。 我已经好几次了,但我没有得到这个。

任何人都可以帮助建议如何设置它。 我被卡住了。

UPDATE

我已经删除了我创建的所有设置,试图按照上面的指南,并再次尝试使用letsencrypt_plugin gem

目前,这些设置都已配置但是,当我尝试运行rake letsencrypt_plugin时,我收到一条错误消息:

挑战validation失败! 错误:urn:acme:错误:unknownHost:找不到www.example.com的有效IP地址

我现在不确定是否应该将我的自定义域名放在letsencrypt_plugin.yml文件中,或者我是否应该在那里为我的自定义域名编写heroku app别名。

此外,由于应用程序托管在heroku上,因此没有IP地址。 我的DNS配置根本没有任何A记录(没有IP地址)。

进一步更新

我做了一个全新的rails 5 app。 我把它放在heroku上。 我再次尝试了let encrypt_plugin。 这一次,我得到一个错误,上面写着:

 heroku run rake letsencrypt_plugin Running rake letsencrypt_plugin on ⬢ ancient-octopus-78709... up, run.6780 (Hobby) I, [2016-10-17T07:59:13.985385 #3] INFO -- : Trying to register at Let's Encrypt service... I, [2016-10-17T07:59:13.985480 #3] INFO -- : Loading private key... I, [2016-10-17T07:59:14.255357 #3] INFO -- : Acme::Client::Error::Malformed - Registration key is already in use I, [2016-10-17T07:59:14.256579 #3] INFO -- : Already registered. I, [2016-10-17T07:59:14.256646 #3] INFO -- : Sending authorization request for: www..com... I, [2016-10-17T07:59:14.504527 #3] INFO -- : Storing challenge information... I, [2016-10-17T07:59:16.688404 #3] INFO -- : Waiting for challenge status... E, [2016-10-17T07:59:18.456415 #3] ERROR -- : Challenge verification failed! Error: urn:acme:error:unauthorized: Invalid response from http://www..com/.well-known/acme-challenge/eAniFLfG_3t5HrD6zbtppzWWYz1Ay76r0GaFHQ62GLI: " We're sorry, but something went wrong (500) 

我最近使用你发布的一个链接在heroku (python)上实现了ssl。 让我理解这个过程。

首先

  • 您是否拥有自己的网站域名或使用heroku生成的域名? 上面的所有链接都适用于具有自定义域名的网站, 而不适用于heroku默认域名[name-of-app].herokuapp.com
  • 拥有自己的域名请遵循此处描述的步骤
  • 您有自定义域名设置,请按照上面的链接,将example.com替换为--your-domain--name.com

完成上述过程后,我会很乐意解释更多

现在您有了一个站点,您可以访问myexample.com上托管的myexample.com

  • 你必须在你的rails应用程序上打开一个带有.well-known/acme-challenge路径的URL。 打开它并重新部署rails应用程序后,您应该可以访问URL http://myexample.com/.well-known/acme-challenge现在这将显示一个没有内容的空白页面。
  • 接下来,输入您输入的域名,手动生成上述链接中指定的ssl证书。 你应该到达一个给你长期随机标记的ya6k1edW38z.ebThgg67ggbb...

现在这是关键部分。 这就是让加密validation您是生成ssl证书的域的实际所有者的方式。 它为您提供了一个非常随机和复杂的文本,并要求您在域名your-domain.com上显示特定路线.well-known/acme-challenge

要做到这一点

  • 文本格式呈现此标记作为.well-known/acme-challenge路由的输出。 有关示例代码,请参阅上面的链接
  • 使用这些更改重新部署您的应用
  • 现在手动检查路线http://myexample.com/.well-known/acme-challenge 。 这应该显示您在上述步骤中手动创建期间获得的文本。

现在继续certbot上的创建过程。 这应该为您的域创建证书。 获得证书后,请在此链接后将其添加到heroku ssl设置