让我们加密独立授权过程失败

时间:2018-10-02 09:31:28

标签: spring spring-boot ssl lets-encrypt

首先,感谢所有可能会或可能不会尝试帮助我的人。 我的问题:我正在尝试使用Let's Encrypt创建ssl证书。已经安装了文档中提到的所有内容。我决定使用certbot /,因为这似乎是满足需求的最简单方法。

我们已经释放了端口80和443,并且其中一个端口的每个请求都被重定向到我的Ubuntu 18.04计算机的内部IP地址。

这台机器上没有配置,因此没有任何监听端口80或443的端口,就像您在netstat命令中看到的那样:

tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      895/systemd-resolve 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1211/sshd           
tcp6       0      0 :::22                   :::*                    LISTEN      1211/sshd   

创建证书后,我将运行一个弹簧启动应用程序,该应用程序应使用证书。

据我从文档中了解,不需要运行的应用程序在这些端口上侦听。应该可以使用standalone参数来创建证书。因此,我猜想certbot创建了一个小型应用程序,它自己侦听这些端口之一,以验证我是我声称的那个端口。对吧?

placeholder.example.com就像您将使用占位符一样。我认为很明显为什么在打开端口80和443时不发布域名。

root@urlaub:/# certbot certonly --standalone --preferred-challenges http -d placeholder.example.com

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for placeholder.example.com
Waiting for verification...
Cleaning up challenges
Failed authorization procedure. placeholder.example.com (http-01): urn:ietf:params:acme:error:connection :: The server could not connect to the client to verify the domain :: Fetching http://placeholder.example.com/.well-known/acme-challenge/jCJ4waxV0aYPxjqDI3OcBXXPReNSrse1kd6piK9Dwdo: Connection refused

IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: placeholder.example.com
   Type:   connection
   Detail: Fetching
   http://placeholder.example.com/.well-known/acme-challenge/jCJ4waxV0aYPxjqDI3OcBXXPReNSrse1kd6piK9Dwdo:
   Connection refused

   To fix these errors, please make sure that your domain name was
   entered correctly and the DNS A/AAAA record(s) for that domain
   contain(s) the right IP address. Additionally, please check that
   your computer has a publicly routable IP address and that no
   firewalls are preventing the server from communicating with the
   client. If you're using the webroot plugin, you should also verify
   that you are serving files from the webroot path you provided.

编辑:我已经尝试了很多次,但都没有成功。现在/ etc / letsencrypt / keys中有13个.pem文件 我可以将它们转换为.p12文件以在Spring Boot应用程序中使用它吗?

2 个答案:

答案 0 :(得分:1)

重定向到我的服务器计算机时出现问题。因此,上面使用的命令可以正常工作,并且我能够创建证书。如果有人想使用它:那就去吧。

我的意图是在春季启动应用程序中使用它,并且需要一个pkcs12文件。我可以使用以下命令将certbot创建的.pem文件转换为.p12文件:

openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out keystore.p12 -name tomcat -CAfile chain.pem -caname tomcat

在application.properties中,必须输入以下内容:

server.port: PORTNUMBER
server.ssl.key-store:/etc/letsencrypt/live/<YOURDOMAIN>/keystore.p12
server.ssl.key-store-password: <PASSWORD YOU WERE PROMPTED WHEN CREATING THE CERTIFICATE>
server.ssl.keyStoreType: PKCS12
server.ssl.keyAlias: tomcat

答案 1 :(得分:0)

如果使用HTTP验证,则使用Let's Encrypt,您将需要一个服务器在placeholder.mydomain.com的端口80(HTTP)上处理请求,以便Let's Encrypt服务器可以下载文件.well-known/acme-challenge/jCJ4waxV0aYPxjqDI3OcBXXPReNSrse1kd6piK9Dwdo。这就是“让我们加密”验证您对域具有控制权的方式。注意:该文件名是动态生成的,每次您尝试验证时都会不同。

我使用的另一个选项是使用DNS验证,然后在DNS服务器中创建特殊记录。然后,您可以在桌面上为要求该域名使用SSL的任何服务创建证书。