인증서 LetsEncrypt에 서명할 수 없습니다.

인증서 LetsEncrypt에 서명할 수 없습니다.

최근 Nextcloud를 통해 클라우드를 설정했습니다. 내 도메인에 대한 인증서에 성공적으로 서명했습니다.https://mydomain.home.com(물론 실제 도메인은 다릅니다). 모든 것이 잘 진행되었습니다. 하지만 이제는 "www.mydomain.home.com"에 대한 인증서도 갖고 싶습니다. 그러나 이것은 작동하지 않습니다.

nc -z -v -w5 mydomain.home.com 80

보고서:

DNS fwd/rev mismatch: mydomain.home.com != host-blabla
mydomain.home.com [255.255.255.255] 80 (http) open

따라서 인증용 포트 80은 괜찮습니다. 이것이 내 nginx 구성의 모습입니다(사이트 사용 가능/기본값).

server {
listen 80;
server_name *.mydomain.home.com;
# enforce https
return 301 https://$server_name$request_uri;
}

server {
listen 443 ssl;
server_name *.mydomain.home.com;

ssl_certificate /etc/letsencrypt/live/mydomain.home.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mydomain.home.com/privkey.pem;

# Add headers to serve security related headers
# Before enabling Strict-Transport-Security headers please read into this
# topic first.
# add_header Strict-Transport-Security "max-age=15768000;
# includeSubDomains; preload;";
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;

# Path to the root of your installation
root /var/www/nextcloud/;

나는 사용했다

certbot certonly --webroot -w /var/www/mydomain.home.com -d 
mydomain.home.com -d www.mydomain.home.com

www가 포함된 두 번째 도메인을 생략하면 작동하지만 위 명령을 실행하면 오류 메시지가 표시됩니다.

Failed authorization procedure. www.mydomain.home.com (http-01): 
urn:acme:error:connection :: The server could not connect to the client 
to verify the domain :: DNS problem: NXDOMAIN looking up A for 
www.mydomain.home.com

왜 그런 겁니까?

또한 내가 사용할 때

certbot renew --dry-run

나는 단지 다음을 얻습니다:

Attempting to renew cert from 
/etc/letsencrypt/renewal/mydomain.home.com.conf produced an unexpected 
error: Failed authorization procedure. mydomain.home.com (http-01): 
urn:acme:error:connection :: The server could not connect to the client 
to verify the domain :: Fetching https://*.mydomain.home.com/.well-
known/acme-challenge/GwAAZEokTN1ByCuJUGP4t61mCeuTxIDKypd4DzhcfEg: Error 
getting validation data. Skipping.

답변1

암호화하려면 http서버에 액세스하는 대신 통과가 필요하다고 생각합니다 https. 블록 .well-known의 디렉토리에 대해서는 예외를 만들어야 합니다 http server.

예를 들어:

server {
    listen 80;
    server_name *.mydomain.home.com;

    location / {
        return 301 https://$server_name$request_uri;
    }
    location /.well-known/ {
        root /path/to/directory;
    }
}
server {
    listen 443 ssl;
    server_name *.mydomain.home.com;

    ssl_certificate ...;
    ssl_certificate_key ...;

    ...

    location /.well-known/ {
        root /path/to/directory;
    }
}

관련 정보