업데이트: yum 업데이트를 롤백하려고 했지만 문제가 해결되지 않았습니다. 또한 SSL 없이 단일 가상 호스트만으로 서버를 실행한 다음 http를 통해 사이트에 액세스해 보았습니다. 아직 작업을 안하고 있는데 SSL 오류가 사라졌으니 SSL 문제의 원인을 제거한 것 같습니다. 디버그 수준 로깅을 활성화하고 모든 로그를 다시 확인했지만 아무 도움이 되지 않았습니다.
방화벽을 중지하고 사이트가 정상으로 돌아왔습니다. 좋아요, 괜찮습니다. 하지만 방화벽을 고쳐야 합니다. JSBillings는 자신의 의견에서 내 VPS가 있는 컨테이너 유형과 관련된 몇 가지 문제와 방화벽과 관련된 알려진 문제를 지적했습니다. 좀 더 철저하게 연구해야 해요.
문제를 요약하자면: Apache가 실행되지만(systemctl status httpd를 실행하면 실행 중으로 표시됨) 페이지가 제공되지 않습니다. 원격 요청이 httpd 요청 로그를 놓쳤습니다. 원격 컴퓨터에서 연결하려는 시도와 관련된 방화벽 로그에 아무 것도 표시되지 않습니다.
재미있는 사실: 동일한 가상 호스트에서 링크를 실행하고 내 도메인 중 하나를 가리키면 "검색할 수 없습니다: SSL 오류"가 발생합니다. 루프백이나 서버 IP에 대한 링크를 지정하면 가상 호스트가 생기므로 이를 비활성화하고 다시 시도합니다. 결과는 알파벳순으로 다음 가상 호스트입니다. 데스크탑의 브라우저를 서버 IP로 지정하면 도메인 이름에 액세스하려고 할 때와 마찬가지로 시간 초과가 발생합니다.
또한 http 버전에 대한 링크를 지정하려고 시도했지만 https로 리디렉션되는 것 같습니다(그러면 위와 동일한 오류가 발생합니다). 로그에서 성공적인 링크 요청을 볼 수 있지만 실패한 링크 요청은 볼 수 없습니다.
내 호스팅이나 DNS에 문제가 있을 수 있나요? 아니면 지금 가상 호스트 모듈이 고장난 걸까요? SSL을 원인으로 배제한 것 같지만 이것이 문제라는 증거가 여전히 보입니다(링크 오류). 아니면 완전히 다른 것입니까?
yum 업데이트를 하고 어제 재부팅하기 전까지 모든 것이 몇 달 동안 작동했다는 사실을 명심하세요.
배경/구성
PHP 및 MariaDB와 함께 CentOS 7 및 Apache 2.4.6을 실행하는 VPS가 있습니다. 저는 웹 호스팅 설정을 사용하여 각각 고유한 도메인 이름을 가진 4개의 작은 사이트를 호스팅하고 있습니다. 실제 도메인 이름 대신 domain1.com을 사용하겠습니다. 가상 호스트 파일 예:
<VirtualHost *:80>
ServerName domain1.com
-other typical settings...
RewriteEngine on
RewriteCond %{SERVER_NAME} =domain1.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
또한 나열하지 않아도 되는 디렉토리 설정도 있습니다.
몇 달 전에 저는 Certbot(Letsencrypt)을 사용하여 SSL을 설정했습니다. 가상 호스트 파일을 추가하고 원래 호스트 파일(위)로 리디렉션합니다. 그 이후로 저는 인증서를 여러 번 갱신했습니다.
오늘 오후에 실행하고 업데이트하고 재부팅할 때까지 모든 것이 잘 작동했습니다.
HTTPD, SSL 또는 TLS를 포함하는 yum 로그 항목은 다음과 같습니다.
Apr 29 13:17:41 Updated: httpd-tools-2.4.6-93.el7.centos.x86_64
Apr 29 13:18:29 Updated: httpd-2.4.6-93.el7.centos.x86_64
Apr 29 13:20:55 Updated: 1:mod_ssl-2.4.6-93.el7.centos.x86_64
Apr 29 13:18:39 Installed: gnutls-3.3.29-9.el7_6.x86_64
SSL 오류 로그 (실제 도메인 이름을 "domain.com"으로 바꿨습니다) (이 항목은 오늘 업데이트에서 나온 것입니다)
[Wed Apr 29 16:47:40.447536 2020] [ssl:warn] [pid 4945] AH01909: RSA certificate configured for domain1.com:443 does NOT include an ID which matches the server name
[Wed Apr 29 16:48:26.901356 2020] [ssl:warn] [pid 485] AH01909: RSA certificate configured for server.domain1.com:443 does NOT include an ID which matches the server name
이러한 경고를 조사했지만 경고의 원인에 대해 명확한 결론을 내릴 수 없습니다. 그러나 이는 경고일 뿐이므로 문제가 발생해서는 안 됩니다. 하지만 이것이 문제에 대해 내가 갖고 있는 유일한 단서입니다.
HTTPD 오류 로그 (업데이트하기 전에 로그에서 이런 내용을 봤습니다)
[Wed Apr 29 16:48:27.061664 2020] [ssl:warn] [pid 485] AH02292: Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)
[Wed Apr 29 16:48:32.016207 2020] [mpm_prefork:notice] [pid 485] AH00163: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.2.30 configured -- resuming normal operations
[Wed Apr 29 16:48:32.016265 2020] [core:notice] [pid 485] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
[Wed Apr 29 17:04:52.428739 2020] [mpm_prefork:notice] [pid 485] AH00170: caught SIGWINCH, shutting down gracefully
[Wed Apr 29 17:04:53.548204 2020] [suexec:notice] [pid 1182] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Wed Apr 29 17:04:53.554485 2020] [ssl:warn] [pid 1182] AH02292: Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)
[Wed Apr 29 17:04:53.599697 2020] [lbmethod_heartbeat:notice] [pid 1182] AH02282: No slotmem from mod_heartmonitor
[Wed Apr 29 17:04:53.605746 2020] [ssl:warn] [pid 1182] AH02292: Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)
[Wed Apr 29 17:04:53.646755 2020] [mpm_prefork:notice] [pid 1182] AH00163: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.2.30 configured -- resuming normal operations
[Wed Apr 29 17:04:53.646797 2020] [core:notice] [pid 1182] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
HTTP 요청 로그에는 업데이트 이후 새 항목이 포함되어 있지 않습니다.
SSH에 호스트 이름을 입력하면 "서버"가 반환됩니다.
SSL 구성 파일다음과 같은 2가지 관심 라인이 있습니다.
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
인증서를 확인하면 CN=server라고 표시됩니다.
Cerbot은 /etc/letsencrypt에 인증서를 설치하며 이는 내 4개의 도메인 이름에 해당합니다.
내 거주인파일: (실제 도메인 이름을 숨기도록 편집됨)
127.0.0.1 localhost.localdomain localhost localhost4.localdomain4 localhost4
# Auto-generated hostname. Please do not remove this comment.
190.97.167.205 server.domain1.com server domain2.com domain3.com domain4.monster
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
동일한 상자에서 링크를 실행하면 여전히 문제가 발생하기 때문에 이것이 방화벽 문제라고 생각하지 않지만 방화벽 로그의 다음 항목은 보기에 좋지 않습니다.
2020-04-29 16:48:18 WARNING: AllowZoneDrifting is enabled. This is considered an insecure configuration option. It will be removed in a future release. Please consider disabling it now.
2020-04-29 16:48:18 WARNING: ipset not usable, disabling ipset usage in firewall.
2020-04-29 16:48:20 WARNING: Failed to load nf_conntrack module: modprobe: ERROR: could not find module by name='nf_conntrack'
modprobe: ERROR: could not insert 'nf_conntrack': Function not implemented
modprobe: ERROR: Error running install command for nf_conntrack
modprobe: ERROR: could not insert 'nf_conntrack': Operation not permitted
2020-04-29 16:48:20 ERROR: Failed to read file "/proc/sys/net/netfilter/nf_conntrack_helper": [Errno 2] No such file or directory: '/proc/sys/net/netfilter/nf_conntrack_helper'
2020-04-29 16:48:20 WARNING: Failed to get and parse nf_conntrack_helper setting
2020-04-29 16:48:20 WARNING: ebtables not usable, disabling ethernet bridge firewall.
내가 시도한 것
- 모든 도메인에 대해 certbot 다시 실행
- domain1에 대해서만 certbot 다시 실행
- Yum 업데이트(다시) - 패키지를 설치할 필요가 없습니다.
- 서버를 제거하려면 호스트 파일을 편집하십시오. 및 서버 - 위에서 언급한 대로 일부 시스템 프로세스가 이를 원래 상태로 복원합니다.
- domain1 가상 호스트 구성에 대한 SSL 항목을 주석 처리하고 http://...로 이동합니다.
- ssl.conf의 인증서 줄을 주석 처리했습니다. Apache가 시작되지 않으므로 다시 넣었습니다.
- PHP 대신 HTML 페이지로 이동 - 동일한 결과.
제거 및 재설치에 대해 생각하기 시작했지만 여기에 뭔가 빠졌을 수도 있기를 바라고 있습니다. 이 문제를 해결하는 데 도움을 주시면 정말 감사하겠습니다.
감사합니다!