>

Let 's Encrypt에서 인증서가 생성되어 다음과 같이 (및 문서에서 제안하는 ) :

"endpoint": {
    "type": "tcp",
    "port": 8089,
    "tls": {
      "key": "../ssl/key.pem",
      "certificate": "../ssl/cert.pem"
    }
  },

Java를 통해 연결할 때 (다른 API에서 다르게 표현하면 결과가 비슷할 것이라고 확신합니다) 결과는 다음과 같습니다.

와이즈 비즈

이것은 다음과 같이 링크 된 Encrypt의 중간 인증서를 요구하자 이것 :

java.security.cert.CertPathValidatorException: Trust anchor for certification path not found

안타깝게도이 기능도 작동하지 않아 핸드 셰이크 오류가 발생합니다 (정확한 문구는 기록하지 않았습니다).

"endpoint": { "type": "tcp", "port": 8089, "tls": { "key": "../ssl/key.pem", "certificate": "../ssl/cert.pem", "ca_certificates": [ "../ssl/intermediate.cert.pem" ], } },
  • 답변 # 1

    문서를 더 깊이 파고 들어 명시 적으로 lets encrypt intermedia를 참조하지만 key 매개 변수의 이름이 다른이 예제를 발견했습니다.

    "chain_certificates": [
         "lets-encrypt-x3-cross-signed.pem"
    ],
    
    

    이를 시도하면 동일한 문제가 발생합니다 (핸드 셰이크 실패)

    그런 다음 다음을 시도했습니다 :

    Let 's Encrypt의 중간체로 인증서 파일 연결

    인증서 및 키 매개 변수를 사용하여 초기 구성으로 되돌리기

    기본적으로 이것 :

     "tls": {
          "key": "../ssl/key.pem",
          "certificate": "../ssl/cert-plus-intermediate.pem"
        }
    
    

    서버를 다시 시작한 후 (SSL 설정을 변경할 때마다 다시 시작해야 함) 연결이 올바르게 설정되었습니다. 작동중인 구성이 있으면 시스템에서 신뢰할 수있는 사용자 만 키 파일을 읽을 수 있어야합니다 (이상적으로는 사용자 크로스바가 ( chmod 600 key.pem ) )

  • 이전 swift - Firebase에서 사용자가 이메일 주소로 액세스하도록 허용하는 방법은 무엇입니까?
  • 다음 typescript - 함수 외부에서 사용할 수없는 전역 변수에 삽입 된 값