OS X Server에 SSL을 통해 연결할 때 tlsv1 경보 프로토콜 버전 활성화하려면 어떻게해야합니까? 맨 아래로 이동하면

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 (여기에 여러 인스턴스가 있음)

미안해. 나는이 권리를 사용하지 않는다. 그러나 잘하면 내가 그것을 끝내면 실제로 대답이 될 것이다.