TLS 1.2가 준비되지 않은 모든 클라이언트를 평가하는 동안 단기간에 macOS 10.12.4를 사용하는 서버 5.3에서 TLS 1.1 및 1.0을 다시 활성화하려면 어떻게해야합니까?
맨 아래로 이동하면 이전 버전과의 호환성을 복원하기 위해 구성 파일 변경 시도가 실패했습니다
SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2
우리 서버를 macOS 12.4로 업데이트하고 Server app를 버전 5.3으로 업데이트 한 후 curl
Linux 컴퓨터에서 macOS 서버 https 사이트에 연결하는 작업이 중단되어 클라이언트 측에서 다음 메시지를 발행했습니다.
$ curl -v --insecure -o "output.file" https://myserver.domain/path/page.php
* About to connect() to myserver.domain port 443 (#0)
* Trying 192.168.xxx.xxx... connected
* Connected to myserver.domain (192.168.xxx.xxx) port 443 (#0)
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs/
* SSLv3, TLS handshake, Client hello (1):
} [data not shown]
* error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
* Closing connection #0
MacOS 서버가 업데이트되기 전에 연결이 제대로 작동했습니다. 그래서 그것은 업데이 트가 연결 옵션을 껐다. curl
에 의존. 나는 많은 것을 봤지만 아직 정확한 원인이 무엇인지에 대해서는 확신이 서지 않다.
똑같다 curl
명령은 다른 Mac에서 발행 할 때 작동합니다. 리눅스 머신에는
$ curl --version
curl 7.19.0 (x86_64-suse-linux-gnu) libcurl/7.19.0 OpenSSL/0.9.8h zlib/1.2.3 libidn/1.10
Protocols: tftp ftp telnet dict ldap http file https ftps
Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz
Mac 클라이언트에서는
$ curl --version
curl 7.51.0 (x86_64-apple-darwin16.0) libcurl/7.51.0 SecureTransport zlib/1.2.8
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz UnixSockets
유감스럽게도 업데이트를 시도하는 옵션이 아닙니다. curl
Linux 컴퓨터에서.
일부 리소스는 호환되지 않는 암호 제품군을 원인으로 요구하지만 일부 테스트를 거친 후에는 다음을 사용하여 솔루션을 찾을 수 없었습니다. --ciphers
옵션을 사용하고 호환 가능한 암호화 제품군을 찾는 방법을 모르겠습니다.
나는 macOS Server 5.3으로 무엇이 바뀌 었는지 알아 내려고 노력했지만, Apple의 변경 로그는 그것에 대해 어떤 힌트도주지 않는다. 그래서 질문은 :
macOS 12.4 및 / 또는 macOS Server 5.3에서 변경된 사항과 macOS 서버를 다시 구성 할 수있는 방법은 무엇입니까? curl
연결이 다시 작동합니까?
업데이트 1 :
나는 일시적으로 항구 443을 대중에게 노출 시켜서 SSL 연구소 테스트 . 결과는 내 MacOS 서버가 TLS 1.2 만 지원한다는 것을 보여줍니다. 여러 시뮬레이션 클라이언트의 경우 테스트 보고서 Server sent fatal alert: protocol_version
– 예 : IE8-10 / Win7 및 Java7u25.
TLS 1과 1.1을 다시 활성화하려고 시도했습니다.
/library/server/web/config/apache2/sites/0000_127.0.0.1_34543_myserver.domain.conf
/library/server/web/config/apache2/httpd.conf
/library/server/web/config/apache2/httpd_server_app.conf
/library/server/web/config/proxy/apache_serviceproxy.conf
(여기에 여러 인스턴스가 있음)
작고 보기 흉한 사람
SSLProtocol -all +TLSv1.2
으로
SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2
또는
SSLProtocol All
URL을 가져올 때 차이를 만들지는 않았습니다. curl
.
업데이트 2 :
서비스 프록시 오류 로그에 표시됩니다.
[datetime] [ssl:info] [pid n] [client x.x.x.x:38805] AH02008: SSL library error 1 in handshake (server myserver.domain:443)
[datetime] [ssl:info] [pid n] SSL Library Error: error:1408A10B:SSL routines:SSL3_GET_CLIENT_HELLO:wrong version number
[datetime] [ssl:info] [pid n] [client x.x.x.x:38805] AH01998: Connection closed to child 11 with abortive shutdown (server myserver.domain:443)
내게는 TLS v1을 활성화하려는 내 시도가 작동하지 않는 것처럼 보입니다.
그래서 질문은 : MacOS Server Apache에서 TLS v1을 어떻게 다시 활성화 할 수 있습니까?
답변
컬 7.19.0 … OpenSSL / 0.9.8h
이것은 TLS 1.2 나 최신 ECDHE 암호와 같은 최신 프로토콜을 지원하지 않는 OpenSSL의 아주 오래되고 (지원되지 않는) 버전입니다. 업그레이드 후 서버가 이제 그러한 프로토콜 및 / 또는 암호를 필요로하므로 이전 OpenSSL 버전과의 연결이 실패 할 확률이 높습니다.
* SSLv3, TLS handshake, Client hello (1):
이는 클라이언트가 SSL 3.0을 사용하려고한다는 것을 나타낼 수도 있습니다. SSL 3.0은 안전하지 않은 프로토콜이기 때문에 현재 비활성화되어 있습니다. OpenSSL 0.9.8에서 지원되는 TLS 1.0을 사용하도록 강제 할 수 있습니다. curl -1
또는 curl --tls1
서버가 여전히 TLS 1.0을 지원하고 이전 OpenSSL 버전에서 사용할 수 있도록 구성된 암호가 있기를 바랍니다.
답변
TLSv1 (또는 다른 프로토콜)을 다시 활성화하려면 다음에서 프록시 구성을 수정해야합니다. /Library/Server/Web/config/proxy/apache_serviceproxy.conf
, 필요한 프로토콜을 <VirtualHost *:443>
섹션은 이렇게 :
<VirtualHost *:443>
ProxyPreserveHost On
SetEnv proxy-chain-auth on
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"
RequestHeader unset Proxy early
<IfModule mod_ssl.c>
SSLEngine On
SSLCertificateFile "/etc/certificates/${CERT_ID}.cert.pem"
SSLCertificateKeyFile "/etc/certificates/${CERT_ID}.key.pem"
SSLCertificateChainFile "/etc/certificates/${CERT_ID}.chain.pem"
SSLCipherSuite "HIGH:MEDIUM:!MD5:!RC4:!3DES"
SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2
SSLProxyEngine On
SSLProxyProtocol -all +TLSv1.2
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
</IfModule>
[...]
</VirtualHost>
내 검사 결과에 따르면, SSLProxyProtocol
수정할 필요가 없습니다. 또한 질문에 언급 된 다른 파일의 변경 사항은 영향을 미치지 않으므로 변경하지 않아도됩니다.
경고 : 서버 응용 프로그램을 업그레이드하면 항상 덮어 씁니다. /Library/Server/Web/config/proxy/apache_serviceproxy.conf
. 업그레이드 후에 수정 사항을 다시 적용해야합니다.
참고 : 변경 사항을 별도의 사용자 정의 구성 파일로 이동하려고했습니다. apache_serviceproxy_customsites_myserver.domain.conf
이는 서버 업그레이드가 이러한 수정 사항을 되 돌리는 것을 중단해야합니다. 그 외에도 프로토콜 변경은 특정 도메인으로 제한 될 수 있습니다. 그러나 그것은 여전히 효과가없는 것처럼 보입니다.
수정 사항이 사용되었는지 확인하려면 macOS를 다시 시작해야합니다. sudo shutdown -r
),뿐만 아니라 웹 서버 ( sudo serveradmin stop/start web
) 프록시 서비스를 다시 시작하십시오.
에 의한 검증 SSL 연구소 서버 테스트 TLS 1.0, 1.1 및 1.2는 현재 사용할 수 있지만 SSL 2 및 3은 사용할 수 없다고보고합니다.
답변
Sienna Server 5.3에서도 TLS 1.1을 활성화해야합니다.
그것 때문에 통과하지 못하는 몇 가지 이메일이 있습니다.
/library/server/web/config/apache2/sites/0000_127.0.0.1_34543_myserver.domain.conf
/library/server/web/config/apache2/httpd.conf
내 서버에 파일이 없습니다.
/library/server/web/config/apache2/httpd_server_app.conf
편집 (굵게 표시) 및 재시작은 아무 것도하지 않았습니다.
모듈 mod_ssl.c
SSLProtocol – 모두 + TLSv1.1 + TLSv1.2 –DIDNT WORK
SSLProtocol 모든 –DIDNT WORK
/library/server/web/config/proxy/apache_serviceproxy.conf (여기에 여러 인스턴스가 있음)
미안해. 나는이 권리를 사용하지 않는다. 그러나 잘하면 내가 그것을 끝내면 실제로 대답이 될 것이다.