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应用程序后,您应该可以访问URLhttp://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设置