SSL 클라이언트 인증서 설정#
Windows, macOS 및 Linux에서 브라우저와 Mattermost 데스크톱 앱용 SSL 클라이언트 인증서를 구성하려면 다음 단계를 따르세요. Mattermost 모바일 앱에서는 아직 SSL 클라이언트 인증서가 지원되지 않습니다.
시작하기 전에 SSL 및 HTTP/2를 사용하는 프록시로 NGINX 구성과 Let’s Encrypt와 같은 유효한 SSL 인증서를 포함하여 Mattermost 설치 공식 가이드 를 따라 시스템에 설치하세요.
이 가이드에서는 Mattermost 서버 도메인 이름이 example.mattermost.com 이고, 사용자 계정은 이메일 mmuser@mattermost.com 과 비밀번호 mmuser-password 를 가진 mmuser 입니다.
중요
웹 앱을 위한 상호 TLS 인증 설정#
클라이언트 인증서 서명을 위한 인증 기관(CA) 키 와 인증서를 생성하세요. TLS 연결을 설정할 때 NGINX 프록시 서버는 웹 앱에서 제공하는 클라이언트 인증서를 요청하고 검증합니다.
openssl genrsa -des3 -out ca.mattermost.key 4096
pass phrase: capassword
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를 위한 클라이언트 측 키와 인증서 서명 요청을 비밀문구와 함께 생성하세요:
openssl genrsa -des3 -out mmuser-mattermost.key 1024
passphrase: mmuser-passphrase
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
Challenge password: mmuser-passphrase
이전에 생성한 CA 인증서로 사용자의 클라이언트 인증서에 서명하세요:
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를 위한 새로 생성된 클라이언트 인증서를 확인하세요:
openssl x509 -in mmuser-mattermost.crt -text -noout
/etc/nginx/sites-available/mattermost파일을 열고 NGINX 프록시 서버가 클라이언트 인증서를 요청하고 검증하도록 다음 줄을 수정하세요:
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;
...
다음 curl 명령어로 프록시에 대한
mmuser의 CA 키가 작동하는지 확인하세요:
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 파일을 생성하세요:
openssl pkcs12 -export -out mmuser-mattermost.p12 -inkey mmuser-mattermost.key -in mmuser-mattermost.crt -certfile ca.mattermost.crt
Enter Export Password: mmuser-passphrase
필요한 경우 다른 사용자에 대해 위의 2-7단계를 반복하세요.
7단계에서 생성된
.p12파일을 키체인으로 가져오세요. macOS의 Chrome 브라우저에서:
설정 > 고급 > 개인정보 및 보안 > 인증서 관리 로 이동하세요. 이렇게 하면 키체인 접근 앱이 열립니다.
파일 > 항목 가져오기 로 이동하여
mmuser-mattermost.p12파일을 선택하세요.
https://example.mattermost.com으로 이동하세요. 클라이언트 인증서 요청 팝업이 표시되어야 합니다.