SSL 클라이언트 인증서 설정 (베타)
모든 플랜 에서 사용 가능
self-hosted 배포판
브라우저 및 Windows, macOS, Linux용 Mattermost 데스크톱 앱에 SSL 클라이언트 인증서를 구성하려면 다음 단계를 따르세요. SSL 클라이언트 인증서는 아직 Mattermost 모바일 앱에서 지원되지 않습니다.
시작하기 전에 Mattermost 설치하기 공식 가이드 을 따라 시스템에 Mattermost를 설치하고, NGINX 구성을 SSL 및 HTTP/2 프록시로 포함하며, Let’s Encrypt와 같은 유효한 SSL 인증서를 설치합니다.
이 안내서를 위해 Mattermost 서버 도메인 이름은 example.mattermost.com
이고, 사용자 계정은 mmuser
이며, 이메일은 mmuser@mattermost.com
이고, 비밀번호는 mmuser-password
입니다.
Important
이미 클라이언트 인증서를 생성한 경우, 이 단계에서 클라이언트 인증서를 생성하는 것은 선택 사항입니다.
보안, 개인 정보, 규정 준수 및 사용자의 로컬 클립보드를 사용하여 데이터를 복사하는 Mattermost 제품 기능이 작동하는 데 방해가 될 수 있는 브라우저 제한을 피하기 위해 SSL 인증서(또는 자체 서명된 인증서)를 구성하는 것을 강력히 권장합니다. 이는 메시지 링크 공유 및 새로운 팀 멤버 초대 등을 포함합니다.
웹 앱을 위한 상호 TLS 인증 설정
인증 기관(CA) 키 및 클라이언트 인증서에 서명하기 위한 인증서를 생성합니다. TLS 연결을 설정할 때, NGINX 프록시 서버가 웹 앱이 제공하는 클라이언트 인증서를 요청하고 유효성을 검사합니다.
none openssl genrsa -des3 -out ca.mattermost.key 4096
패스 프레이즈: capassword
none openssl req -new -x509 -days 365 -key ca.mattermost.key -out ca.mattermost.crt
Country Name: US State: Maryland Locality Name: Meade Organization Name: Mattermost Organization Unit: Smarttotem Common Name: example.mattermost.com Email Address: admin@mattermost.com
mmuser
를 위한 클라이언트 측 키를 패스 프레이즈와 함께 생성하고, 인증서 서명 요청을 생성합니다:
none openssl genrsa -des3 -out mmuser-mattermost.key 1024
패스프레이즈: mmuser-passphrase
none openssl req -new -key mmuser-mattermost.key -out mmuser-mattermost.csr
Country Name: US State: Maryland Locality Name: Meade Organization Name: Mattermost Organization Unit: Smarttotem Common Name: mmuser Email Address: mmuser@mattermost.com
도전 암호: mmuser-passphrase
이전에 생성한 CA 인증서를 사용하여 사용자의 클라이언트 인증서에 서명합니다:
none openssl x509 -req -days 365 -in mmuser-mattermost.csr -CA ca.mattermost.crt -CAkey ca.mattermost.key -set_serial 01 -out mmuser-mattermost.crt
mmuser
의 새로 생성된 클라이언트 인증서를 확인합니다:
none openssl x509 -in mmuser-mattermost.crt -text -noout
파일
/etc/nginx/sites-available/mattermost
를 열고, NGINX 프록시 서버가 클라이언트 인증서를 요청하고 검증하도록 다음 줄을 수정합니다:
none ssl on; ssl_certificate /etc/letsencrypt/live/example.mattermost.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.mattermost.com/privkey.pem; ssl_client_certificate /opt/mattermost/config/ca.mattermost.crt; ssl_verify_client on;
…
- location ~ /api/v[0-9]+/(users/)?websocket$ {
proxy_set_header X-SSL-Client-Cert $ssl_client_cert; proxy_set_header X-SSL-Client-Cert-Subject-DN $ssl_client_s_dn;
…
- location / {
proxy_set_header X-SSL-Client-Cert $ssl_client_cert; proxy_set_header X-SSL-Client-Cert-Subject-DN $ssl_client_s_dn;
…
mmuser
의 CA 키가 동작하는지 확인하기 위해 다음 curl 명령을 프록시에 보냅니다:
none curl -v -s -k –key mmuser-mattermost.key –cert mmuser-mattermost.crt:mmuser-passphrase https://example.mattermost.com
Mattermost 로그인 페이지가 표시되어야 합니다. 다음과 같은 메시지가 표시되면:
No required SSL certificate was sent
: 문제가 발생했습니다. 위 단계를 검토하고 다시 시도하세요.
Error reading X.509 key or certificate file: Decryption has failed.
: curl이 별도로 암호를 요구하지 않기 때문에, 암호가 인증서와 함께 포함되어 있는지 확인하세요.
클라이언트 기계에 인증서를 설치하도록 CA 키 및 인증서에서 PKCS12 파일을 생성합니다:
none openssl pkcs12 -export -out mmuser-mattermost.p12 -inkey mmuser-mattermost.key -in mmuser-mattermost.crt -certfile ca.mattermost.crt
내보낼 암호 입력: mmuser-passphrase
필요에 따라 다른 사용자에게 해당 사용자에 대해 단계 2-7을 반복합니다.
단계 7에서 생성한
.p12
파일을 키프레인에 가져옵니다. macOS의 Chrome 브라우저에서:
설정 > 고급 > 개인정보 및 보안 > 인증서 관리 로 이동합니다. 이는 키프레인 액세스 앱을 엽니다.
파일 > 항목 가져오기 로 이동하여
mmuser-mattermost.p12
파일을 선택합니다.
https://example.mattermost.com
로 이동합니다. 클라이언트 인증서 요청에 대한 팝업이 표시됩니다.
문제 해결
구성 문제를 해결하고 도움을 요청하려면 이 프로세스를 따르세요 .