비 공용 서버에 대해 Let 's Encrypt 인증서를 받으려면 어떻게해야합니까?


9

StartSSL 인증서를 사용하여 포트 443의 LAN에서만 연결할 수있는 개인 Apache 서버가 있습니다.

Firefox 51이 릴리스 되었으므로 StartSSL 루트 인증서가 신뢰 저장소에서 제거되어 더 이상 연결할 수 없습니다 .

Let 's Encrypt로 마이그레이션하는 것을 고려했지만 공개 HTTP 서버가 필요한 것 같습니다. 제 상황에서 Let 's Encrypt를 사용할 수 있습니까?

가능하면 SSL 인증서를 지불하지 않는 것이 좋습니다.

답변:


10

도메인의 DNS를 제어하는 ​​경우 dns-01 챌린지 방법을 사용하여 TXT 레코드를 만들어 소유권을 증명할 수 있습니다.

수동 또는 자동으로 수행 할 수 있습니다. 공식 certbot 클라이언트조차도 이제 dns-01을 지원한다고 생각합니다.

빠른 Google은 다양한 스크립트와 클라이언트를 사용하여 많은 자습서를 보여 주므로 여기에서 모두 반복하지는 않습니다. 이것은 특히 인트라넷 인증서를 자동화합니다.


인트라넷에서 실제로 작동합니까? certbot이 실행되는 호스트의 /etc/resolv.conf를 단순히 덮어 쓰면 어떻게됩니까?
peterh-복 직원 모니카

@ peterh 예, 설명서에 따라 인트라넷에서 작동합니다.
BE77Y

@ peterh resolv.conf를 덮어 써서 무엇을 시도하고 있는지 잘 모르겠습니다. certbot 클라이언트가 아닌 Let 's Encrypt 유효성 검사 서버가 레코드를 확인할 수 있어야하므로 TXT 레코드를 공용 DNS에서 만들어야합니다. 모든 것이 로컬에서 일어난다면 유효성 검사는 그다지 가치가 없습니다. 인증서가 발급 된 서버는 완전히 개인용 일 수 있습니다.
Martijn Heemels

@MartijnHeemels 글쎄, 이제이 오래된 의견을 더 이상 이해할 수 없습니다. 모든 * .intranet.mydomain 요청에 대해 공용 ip를 가진 세 번째 서버를 표시하는 방식으로 DNS를 속여서 letsencrypt로 인트라넷 인증서를 작성 하지만 letsencrypt의 발신 DNS 서버에 대해서만 수행 합니다. 들어오는 DNS 트래픽을 tcpdumping하여 IP를 얻었습니다. Bind9에는이를위한 "뷰"가 있습니다. 따라서이 세 번째 서버는 까다로운 아파치 구성으로 조정 된 * .intranet.mydomain 인증서를 얻을 수 있습니다. 그런 다음 rsync 스크립트를 사용하여 키를 인트라넷에 미러링 할 수 있습니다.
peterh-Reinstate Monica

@MartijnHeemels 나는 letencrypt의 영역 기반 인증을 자동화하는 데 문제가 있었기 때문에 이것을하고 있습니다. 어쩌면 지금은 작동하지만 솔직히 나는 일반적으로 letencrypt에 만족하지 않습니다 (잘 ... 자동화의 문제, 물론 존재한다는 것은 매우 행복합니다). 그리고 다시 작동시키고 싶지 않습니다. , 내가 한 번 확인한 것. (저는 우리 모두가 이와 같이 "더 나은 것"을하는 것에 대해 상사의 태도를 알고 있다고 생각합니다.)
peterh-Monica Monica Reinstate Monica

5

certbot 클라이언트는 수동 DNS 챌린지를 수행 할 수 있습니다. 이 질문에서 찾은 (현재 두 번째로 인기있는) 답변 DNS를 사용하여 DNS 인증 확인을 사용하려면 어떻게해야합니까? 모든 세부 사항을 가지고 있으며 방금 작동하는 것으로 테스트했습니다.

기본적으로이 명령을 실행하고 지시 사항을 따르십시오.

certbot -d site.your.dom.ain --manual --preferred-challenges dns certonly

0

Apache를 사용하고 있다고 언급했지만, 바인딩되어 있지 않으면 Caddyserver를 사용하는 것이 매우 쉬운 방법 입니다.

거기에는 Caddyfile다음 내용으로 만 정의하면 됩니다.

example.com
tls {
    dns cloudflare
}

구성에서 사용중인 DNS 공급자를 언급하고 환경 변수를 통해 사용하는 API 키를 구성하십시오. docs 에서 지원되는 공급자 목록에서 그 립니다.

그게 전부입니다. 첫 번째 시작의 출력은 다음과 같습니다.

Activating privacy features... 2019/10/21 13:36:48 [INFO][cache:0xc0001c8190] Started certificate maintenance routine
[INFO][cache:0xc000092730] Started certificate maintenance routine
2019/10/21 13:24:49 [INFO][example.com] Obtain certificate
2019/10/21 13:24:49 [INFO] [example.com] acme: Obtaining bundled SAN certificate
2019/10/21 13:24:50 [INFO] [example.com] AuthURL: https://acme-v02.api.letsencrypt.org/acme/authz-v3/876706285
2019/10/21 13:24:50 [INFO] [example.com] acme: Could not find solver for: tls-alpn-01
2019/10/21 13:24:50 [INFO] [example.com] acme: Could not find solver for: http-01
2019/10/21 13:24:50 [INFO] [example.com] acme: use dns-01 solver
2019/10/21 13:24:50 [INFO] [example.com] acme: Preparing to solve DNS-01
2019/10/21 13:24:50 [INFO] cloudflare: new record for example.com, ID XXX
2019/10/21 13:24:50 [INFO] [example.com] acme: Trying to solve DNS-01
2019/10/21 13:24:50 [INFO] [example.com] acme: Checking DNS record propagation using [127.0.0.11:53]
2019/10/21 13:24:50 [INFO] Wait for propagation [timeout: 2m0s, interval: 2s]
2019/10/21 13:24:50 [INFO] [example.com] acme: Waiting for DNS record propagation.
2019/10/21 13:24:52 [INFO] [example.com] acme: Waiting for DNS record propagation.
2019/10/21 13:24:55 [INFO] [example.com] The server validated our request
2019/10/21 13:24:55 [INFO] [example.com] acme: Cleaning DNS-01 challenge
2019/10/21 13:24:55 [INFO] [example.com] acme: Validations succeeded; requesting certificates
2019/10/21 13:24:56 [INFO] [example.com] Server responded with a certificate.
done.

Serving HTTPS on port 443
https://example.com

2019/10/21 13:36:48 [INFO] Serving https://example.com

Serving HTTP on port 80
http://example.com

2019/10/21 13:36:48 [INFO] Serving http://example.com
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.