我正在尝试使用Heroku获取我的应用程序的SSL认证,但自动化证书管理失败了两个域名之一.
我在2017年3月之前创建了dyno,所以我必须heroku certs:auto:enable像这里解释的那样运行.
然后,heroku domains返回:
Domain Name DNS Record Type DNS Target
??????????????? ??????????????? ?????????????????????????????
example.com ALIAS or ANAME example.com.herokudns.com
www.example.com CNAME www.example.com.herokudns.com
Run Code Online (Sandbox Code Playgroud)
这似乎符合heroku的预期.
无论如何,heroku certs:auto回报:
Domain Status
??????????????? ????????????
example.com Failing
www.example.com OK
Run Code Online (Sandbox Code Playgroud)
我承认我对域,DNS等设置非常不识字.因此,这可能是我身边的一个非常简单的错误.但是,我阅读了Heroku故障排除文档以及SO中的类似问题,例如这个或者这个问题,但仍然不知道出了什么问题.
www.example.com可以但却example.com失败的事实让我更加困惑.不幸的是,我收到了一封没有失败原因的通知电子邮件.
我想问题是在Heroku或我购买域名的地方.那就是Namecheap.com.
在那里,Domain我有标签:
NAMESERVERS Namecheap BasicDNS
REDIRECT DOMAIN Source URL Destination
example.com http://www.example.com
Run Code Online (Sandbox Code Playgroud)
在Advanced DNS标签处:
Type Host …Run Code Online (Sandbox Code Playgroud) 我们使用DNS简单地将我们的域指向我们启用SSL的Heroku应用程序.我们寻求的行为如下:
http://ourdomain.com
https://ourdomain.com
http://www.ourdomain.com
应该永久重定向到:
我们已经为www.ourdomain.com创建了一个指向我们应用的.herokussl.com域名的CNAME,但我们不确定如何处理裸域.在GoDaddy中,我们曾经做过非掩码转发.DNSimple没有转发,但确实有称为ALIAS和URL的特殊条目,但我们不确定要使用什么.
我们现有的SSL证书即将到期,因此我们正在尝试安装新证书.但是,关于Heroku的说明缺乏......
要创建捆绑包,您应该以正确的顺序将一堆中间证书文件连接在一起.Heroku上的示例:
$ cat EssentialSSLCA_2.crt ComodoUTNSGCCA.crt UTNAddTrustSGCCA.crt AddTrustExternalCARoot.crt > bundle.pem
Run Code Online (Sandbox Code Playgroud)
(https://devcenter.heroku.com/articles/ssl-certificate-dnsimple)
我们收到了一组不同的文件:
它们应该如何连接?它是否正确?:
$ cat (www_our_domain).crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > bundle.pem
Run Code Online (Sandbox Code Playgroud)
我假设我们不需要配置另一个SSL端点,我们只是更新我们拥有的端点...
$ heroku certs:add server.crt server.key bundle.pem
Run Code Online (Sandbox Code Playgroud)
(https://devcenter.heroku.com/articles/ssl-endpoint#provision-the-add-on)
但是我不清楚旧的证书发生了什么,最初提供的是附加?他们是否覆盖了?他们需要被删除吗?
我想重定向以下域中的所有流量:
http://domain.comhttp://www.domain.comhttps://domain.com至
https://www.domain.com我有上述域名的SSL证书.它托管了一个由Passenger提供服务的Rails应用程序.
要完成裸域重定向,我在DNSimple帐户中设置了URL重定向:
URL domain.com 3600 https://www.domain.com
Run Code Online (Sandbox Code Playgroud)
我的服务器块如下(灵感来自Nginx no-www to www和www to no-www等):
server {
listen 80;
listen 443;
server_name domain.com;
ssl on;
ssl_certificate /etc/ssl/domain-ssl.crt;
ssl_certificate_key /etc/ssl/domain.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
server_tokens off;
access_log /dev/null;
error_log /dev/null;
return 301 https://www.domain.com$request_uri;
}
server {
listen 443 ssl;
server_name www.domain.com;
root /home/deploy/app/current/public;
passenger_enabled on;
passenger_app_env production;
passenger_set_cgi_param HTTP_X_FORWARDED_PROTO https;
ssl on;
ssl_certificate /etc/ssl/domain-ssl.crt;
ssl_certificate_key /etc/ssl/domain.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 …Run Code Online (Sandbox Code Playgroud) 如何使用Certbot的Dnsimple插件通过DNS挑战自动获取和续订证书?我在网上找不到任何例子.
https://github.com/certbot/certbot/tree/master/certbot-dns-dnsimple
我们在Heroku上托管了一个Rails 3应用程序.Heroku建议在使用服务时将裸域(example.com)重定向到子域(www.example.com).这是因为他们更喜欢CNAMES而不是A记录(因为他们的IP地址可能偶尔会改变).
但是,我个人更喜欢在我们的网站上使用裸域(而不是www).我们使用DNSimple来管理我们网站的DNS.如果我们使用他们的ALIAS功能,这是否意味着我们应该能够毫无顾虑地将所有流量重定向到裸域?
另外,除了遵循有关SSL的建议之外,在Heroku上使用裸域时还有什么我们应该注意的吗?
我在 Heroku 上有一个 Django 站点,使用 Dnsimple 来管理 DNS。我还使用 Django 强制使用 HTTPS。
我正在尝试遵循 google 协议,以便我只有一个域
https://example.com
这样,如果用户访问http://www.example.com或https://www.example.com
它会重定向到https://example.com
我在 Dnsimple 中的设置如下所示:
ALIAS example.com example.com.herokudns.com
CNAME www.example.com example.com.herokudns.com
Run Code Online (Sandbox Code Playgroud)
我尝试删除 cname 并在 Dnsimple 中使用 URL 重定向,但它不起作用。
执行此重定向的正确方法是什么?我尝试根据另一个过时的帖子创建一个中间件,但它使我的网站崩溃了。
在我按照heroku上的说明从DNSimple添加证书后,我在尝试访问网站时仍然出现此错误:
www.web.com使用无效的安全证书.
证书不受信任,因为未提供任何颁发者链.该证书仅对以下名称有效:*.herokuapp.com,herokuapp.com
(错误代码:sec_error_unknown_issuer)
那么,可能是什么问题呢?
尝试设置SSL以在mydomain.com上运行.遵循Heroku文档,我已经管理好了SSL工作在https://secure.mydomain.com.但是当我添加SSL时由heroku创建的实际端点仍在说
**Heroku | No such app**
There is no app configured at that hostname.
Perhaps the app owner has renamed it, or you mistyped the URL.
Run Code Online (Sandbox Code Playgroud)
关于如何让tokyo-2121.herokussl.com指向我在Heroku上的实际应用程序,我有点困惑.
emet:myapp vezu$ heroku certs
Endpoint Common Name(s) Expires Trusted
------------------------ --------------------- ------------------------ -------
tokyo-2121.herokussl.com secure.mydomain.com 2013-09-09 12:28:05 CEST True
Run Code Online (Sandbox Code Playgroud)
然后
emet:myapp vezu$ heroku certs:info
Fetching information on SSL endpoint tokyo-2121.herokussl.com... done
Certificate details:
subject: /serialNumber=htilpsjjgrrlhyVZ8rbeandz78555bgpWx/FDEVd/OU=GT166968518/OU=See www.rapidssl.com/resources/cps (c)12/OU=Domain Control Validated - RapidSSL(R)/CN=secure.mydomain.com
start date: 2012-09-06 12:38:54 CEST
expire date: 2013-09-09 …Run Code Online (Sandbox Code Playgroud) 我无法生成Heroku将接受secure.mydomain.com的ssl证书.我正在使用DNSimple,Cedar Stack,并按照此处的说明操作:https://devcenter.heroku.com/articles/ssl-certificate
$ curl https://knowledge.rapidssl.com/library/VERISIGN/ALL_OTHER/RapidSSL%20Intermediate/RapidSSL_CA_bundle.pem > rapidssl_bundle.pemcat server.orig.crt rapidssl_bundle.pem > server.crt所以现在我有了server.key和server.orig.crt文件,我尝试将其上传到Heroku $ heroku certs:add server.crt server.key.这给出了错误
Key could not be read since it's protected by a passphrase.
Run Code Online (Sandbox Code Playgroud)
上面的文档没有提到有关从server.key文件中删除密码的任何内容.所以我在这里挖掘并找到了文档:https://devcenter.heroku.com/articles/ssl#customdomain-ssl.我在上面的#1和#2之间运行这些命令:
1B. $ mv server.key server.orig.key
1C. $ openssl rsa -in server.orig.key -out server.key
然而,这给出了错误
unable to load Private Key
47930:error:0906D06C:PEM routines:PEM_read_bio:no start line:/SourceCache/OpenSSL098/OpenSSL098-47/src/crypto/pem/pem_lib.c:648:Expecting: ANY PRIVATE KEY
Run Code Online (Sandbox Code Playgroud)
我怀疑这意味着没有找到私钥.
谁知道这里有什么问题?这是Heroku问题还是openssl问题(或DNSimple问题)?
我有一个应用程序在服务器服务前端和服务API之间大致分开.我们想添加一个通配符来捕获子域上的用户名,并将它们指向前端服务器.所以我的网址映射如下:
服务于前端文件的服务器由https://example.com和映射https://www.example.com
API的服务器映射为 https://api.example.com
我们在像https://forum.example.com和的域名上也有论坛,演示等https://demo.example.com
现在,使用DNSimple中的ALIAS记录非常简单.
捕获https://username.example.com并将其映射到前端服务器的最佳方法是什么?我们需要的是一个通配符如*.example.com,但我们不想直接api,forum,demo,等到该服务器.
有没有办法在DNS级别设置层次结构或优先级,以便它首先检查命名匹配,然后如果没有找到任何内容则转到通配符?
有大量的Cloudfront问题,但谷歌搜索可能存在的问题仍然让我感到惊讶.这是我的......
我目前正在尝试的是将SSL证书上传到Cloudfront,以便我可以使用https://assets.mydomain.com.然而,这并不是那么顺利.证书是从DNSimple购买的.AWS cli上载如下:
aws iam upload-server-certificate \
--server-certificate-name MyDomainProduction \
--path /cloudfront/ \
--certificate-body file://~/Downloads/STAR_mydomain_com/STAR_mydomain_com.crt \
--private-key file://~/Downloads/STAR_mydomain_com.key \
--certificate-chain file://~/Downloads/STAR_mydomain_com.pem
Run Code Online (Sandbox Code Playgroud)
错误:
A client error (MalformedCertificate) occurred when calling the
UploadServerCertificate operation: Unable to validate certificate
chain. The certificate chain must start with the immediate signing
certificate, followed by any intermediaries in order. The index within
the chain of the invalid certificate is: 1
Run Code Online (Sandbox Code Playgroud)
我想我已经尝试了500种不同的可能性,而且我没有想到为什么我不能让事情发挥作用.以下是我在工具箱中获取的DNSimple和Comodo交给我的内容:
https://assets.mydomain.comSTAR_mydomain_com.pemSTAR_mydomain_com.keySTAR_mydomain_com/AddTrustExternalCARoot.crtSTAR_mydomain_com/COMODORSADomainValidationSecureServerCA.crtSTAR_mydomain_com/COMODORSAAddTrustCA.crt什么是crts,pem和key的正确组合,以使SSL在Cloudfront上运行?