질문

질문

질문

회사에서 발급한 인증서가 필요한 Atlassian Stash에 연결하는 데 문제가 있습니다. Firefox(인증서 포함)를 사용하여 연결하면 웹 사이트에 액세스할 수 있지만 bash(동일한 Ubuntu 버전 기반 Pop_OS! 20.04)를 사용하여 git 저장소를 복제하려고 하면 다음 오류가 발생합니다.

> git clone https://cmstash.cm.website.com/scm/cded/prototyping.git
    Cloning into 'prototyping'...
    fatal: unable to access 'https://cmstash.cm.website.com/scm/cded/prototyping.git/': gnutls_handshake() failed: Handshake failed

인증서를 어떻게 설정하나요?

3개의 파일이 있고 이것들 은 에 배치됩니다 . 그런 다음 런타임에 파일을 실행하고 선택합니다 4125B9-ca.crt. 이는 다음과 같은 경고를 제공합니다.4125B9.crt4125B9.key/usr/share/ca-certificates/work/sudo update-ca-certificates --fresh.crtsudo dpkg-reconfigure ca-certificates

warning: skipping 4125B9-ca.pem,it does not contain exactly one certificate or CRL

문제를 디버깅한 방법

연결을 테스트하기 위해 다양한 명령을 시도했지만 보안상의 이유로 일부 정보가 제거되었습니다.

나는 openssl다음과 같이 시작합니다 s_client:

> sudo openssl s_client -connect cmstash.cm.website.com:443 -CAfile /etc/ssl/certs/ca-certificates.crt -tls1_2

    CONNECTED(00000003)
    [depth 1 & 2 removed]
    depth=0 CN = *.website.com, O = [O removed], OU = IT-Department, OU = CM, [C & L removed]
    verify return:1
    140405633332544:error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:../ssl/recor /rec_layer_s3.c:1543:SSL alert number 40
    ---
    Certificate chain
    [Certificate chain removed]
    ---
    Server certificate
    -----BEGIN CERTIFICATE-----
    [Certificate removed]
    -----END CERTIFICATE-----
    [Subject and Issuer removed]
    ---
    Acceptable client certificate CA names
    [acceptable client certificate names removed]

    Client Certificate Types: RSA sign, DSA sign, ECDSA sign
    Requested Signature Algorithms: RSA+SHA512:DSA+SHA512:ECDSA+SHA512:RSA+SHA384:DSA+SHA384:ECDSA+SHA384:RSA+SHA256:DSA+SHA256:ECDSA+SHA256:RSA+SHA224:DSA+SHA224:ECDSA+SHA224:RSA+SHA1:DSA+SHA1:ECDSA+SHA1
    Shared Requested Signature Algorithms: RSA+SHA512:DSA+SHA512:ECDSA+SHA512:RSA+SHA384:DSA+SHA384:ECDSA+SHA384:RSA+SHA256:DSA+SHA256:ECDSA+SHA256:RSA+SHA224:DSA+SHA224:ECDSA+SHA224
    Peer signing digest: SHA512
    Peer signature type: RSA
    Server Temp Key: ECDH, P-256, 256 bits
    ---
    SSL handshake has read 4110 bytes and written 447 bytes
    Verification: OK
    ---
    New, TLSv1.2, Cipher is ECDHE-RSA-AES128-GCM-SHA256
    Server public key is 4096 bit
    Secure Renegotiation IS supported
    Compression: NONE
    Expansion: NONE
    No ALPN negotiated
    SSL-Session:
        Protocol  : TLSv1.2
        Cipher    : ECDHE-RSA-AES128-GCM-SHA256
        Session-ID:
        Session-ID-ctx:
        Master-Key: [Master Key removed]
        PSK identity: None
        PSK identity hint: None
        SRP username: None
        Start Time: 1600242853
        Timeout   : 7200 (sec)
        Verify return code: 0 (ok)
        Extended master secret: no
   ---

허용되는 클라이언트 인증서 CA 이름을 확인한 후 내 인증서와 비교하여 확인했지만 CA 이름이 동일했습니다.

그런 다음 다음을 사용하려고합니다 curl.

curl -iv --ciphers DEFAULT@SECLEVEL=1 https://cmstash.website.com
    *   Trying 212.203.27.120:443...
    * TCP_NODELAY set
    * Connected to cmstash.cm.website.com ([IP removed]) port 443 (#0)
    * ALPN, offering h2
    * ALPN, offering http/1.1
    * Cipher selection: DEFAULT@SECLEVEL=1
    * successfully set certificate verify locations:
    *   CAfile: /etc/ssl/certs/ca-certificates.crt
      CApath: /etc/ssl/certs
    * TLSv1.3 (OUT), TLS handshake, Client hello (1):
    * TLSv1.3 (IN), TLS handshake, Server hello (2):
    * TLSv1.2 (IN), TLS handshake, Certificate (11):
    * TLSv1.2 (IN), TLS handshake, Server key exchange (12):
    * TLSv1.2 (IN), TLS handshake, Request CERT (13):
    * TLSv1.2 (IN), TLS handshake, Server finished (14):
    * TLSv1.2 (OUT), TLS handshake, Certificate (11):
    * TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
    * TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
    * TLSv1.2 (OUT), TLS handshake, Finished (20):
    * TLSv1.2 (IN), TLS alert, handshake failure (552):
    * error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure
    * Closing connection 0
    curl: (35) error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure

그 후 더 이상 정보가 제공되지 않아 다음을 시도했습니다 gnutls.

gnutls-cli -d 0 -V cmstash.cm.website.com:443

    - Status: The certificate is trusted.
    - Server's trusted authorities:
       [Authorities removed]
    - Successfully sent 0 certificate(s) to server.
    *** Fatal error: A TLS fatal alert has been received.
    *** Received alert [40]: Handshake failed

이는 git과 직접적인 관련이 없는 TLS 문제인 것 같습니다. 불행하게도 오류 메시지에는 핸드셰이크가 실패했다는 내용만 나와 있고 이유나 방법에 대해서는 설명하지 않습니다.

기타 정보

  • 해당 웹사이트는 SSLv3이나 TLS1.3을 지원하지 않아 TLS1.2를 사용했습니다.
  • 인증서는 유효하며 Firefox에서 사용할 때 작동합니다.

관련 정보