HAProxy의 양방향 TLS를 사용하여 명령줄을 통해 인증했지만 브라우저에서는 실패함

HAProxy의 양방향 TLS를 사용하여 명령줄을 통해 인증했지만 브라우저에서는 실패함

개념 증명 개발을 위해 클라이언트와 상호 TLS를 설정한 다음 해당 클라이언트를 웹 서버로 전달하려는 로컬 컴퓨터(OSX)에서 실행되는 HAProxy 서버가 있습니다.

나는 팔로우한다이 튜토리얼인증을 설정하고이 튜토리얼나만의 인증서를 만들어보세요. 내 haproxy 구성 파일은 다음과 같습니다.

global
    log 127.0.0.1 local1 notice

frontend intranet
    mode http
    log-format %T\ %t\ %U
    log global
    bind *:2000 ssl crt both.pem ca-file myCA.pem verify required
    default_backend helpdesk

backend helpdesk
    mode http
    server helpdesk 127.0.0.1:9000 check

both.pem루트 CA와 인증서 자체, 그리고 myCA.pem인증서만 생성하는 데 RSA 개인 키를 사용하십시오. 이 방법이 효과가 있지만 더 좋은 방법이 있으면 알려주시기 바랍니다. 인증서를 두 번 포함하는 것은 불필요한 중복으로 보입니다.

을 사용하여 서버에 연결할 수 있습니다 openssl s_client -connect 127.0.0.1:2000 -cert ./derived.crt -key ./derived.key. 파생된 인증서와 키를 루트 인증서와 키로 교체하여 연결할 수도 있습니다. 두 가지 방법 모두 성공적으로 핸드셰이크하고 포트 9000에서 웹 서버에 연결할 수 있습니다(GET을 보내고 html을 다시 받을 수 있음). 제정신을 유지하기 위해 핸드셰이크를 수행할 수 없는 관련 없는 두 번째 루트 CA도 생성했습니다.

두 번째 자습서의 지침에 따라 파생 CA와 루트 CA를 내 인증서에 추가해 보았습니다. 추가하고 신뢰했지만 Safari는 여전히 서버에 연결할 수 없습니다. 서버의 연결이 예기치 않게 끊어졌다는 메시지가 표시됩니다. 이는 핸드셰이크가 실패했거나 시도조차 하지 않았음을 의미한다고 가정합니다. Chrome에서는 빈 응답을 받았다고 말합니다.

Postman으로 시도해 보고 openssl이 실패할 때 받는 것과 동일한 응답을 얻을 수 있는지 알아볼 예정입니다(핸드셰이크가 실패했음을 명시적으로 알려줍니다). 하지만 간단한 내용이 누락된 경우를 대비해 여기에서 질문하고 싶었습니다. 알잖아. 어떤 도움이라도 대단히 감사하겠습니다.

업데이트: 주소 시작 부분에 https://를 추가해야 한다는 것을 발견했습니다. 이제 브라우저는 사용할 인증서를 선택하라는 메시지를 표시합니다. 그러나 키체인 목록에 나타나는 새 인증서가 아닌 시스템에서 기본적으로 사용할 수 있는 두 개의 인증서(작업 인증서)만 표시됩니다.

업데이트 2: 인증서의 키체인에는 서로 다른 두 부분이 있습니다. 하나는 "인증서"라고 합니다. 인증서를 가져올 때 제가 있었던 곳입니다. 다른 하나는 "내 인증서"라고 하며 "인증서"의 하위 집합인 것 같습니다. 여기에 사용자 지정 인증서를 추가하여 사용할 수 있는 방법을 찾을 수 있을지 생각하고 있었습니다.

답변1

드디어 찾은 게시물을 이용하여 문제를 해결했습니다.다양한 요청을 해보세요.

이 명령을 openssl pkcs12 -export -clcerts -inkey private.key -in certificate.crt -out MyPKCS12.p12 -name "Your Name"사용하면 키체인에 추가할 수 있는 인증서를 생성한 다음 서버에 연결할 때 Safari에서 선택할 수 있습니다.

관련 정보