Configuring proxy to Mattermost transport encryption
Enterprise 플랜에서 사용 가능
self-hosted 배포판
이 기능은 레거시 Mattermost Enterprise Edition E20에서도 사용할 수 있습니다.
Mattermost은 프록시와 애플리케이션 서버 간의 트래픽을 TLS로 암호화할 수 있습니다.
사전 요구 사항
작동 중인 Mattermost 서버 또는 클러스터.
애플리케이션 서버에서 Mattermost 사용자의 인증 자격 증명.
예제 환경
이 시나리오에서는 Mattermost 애플리케이션 서버 하나와 NGINX 서버 하나가 있으며, 둘 다 다음과 같이 Ubuntu 18.04에서 실행됩니다.
transport-encryption-mattermost1: 10.10.250.146
transport-encryption-nginx: 10.10.250.107
NGINX 구성
NGINX 서버에서 sudo 또는 루트 사용자로 두 서버에 연결합니다. Mattermost 프록시 구성( Configuring NGINX with SSL and HTTP/2 (End-User - Proxy)
을(를) 참조하여 추가 정보를 확인합니다)를 열고 다음 줄을 두 번 찾습니다.
proxy_pass http://backend;
프로토콜을 http
에서 https
로 변경합니다:
proxy_pass https://backend;
그 후 NGINX 서버를 아직 다시로드하지 않습니다. 이는 서비스 다운타임을 최소화하기 위한 것입니다.
Mattermost 구성
Mattermost 서버에서 Mattermost의 구성 디렉터리로 이동하고, 프록시 서버와 애플리케이션 서버 간의 트래픽을 암호화하는 데 사용될 자체 서명된 인증서를 생성합니다.
참고: 회사의 CA에서 인증서를 서명할 수도 있습니다.
$ cd /opt/mattermost/config
$ openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
$ chown root:mattermost *.pem
$ chmod 640 *.pem
완료되면 config.json
파일을 열고 ServiceSettings
섹션에서 ConnectionSecurity
, TLSCertFile
, TLSKeyFile
값을 수정합니다.
변경 전
{
"ServiceSettings": {
"SiteURL": "https://transport-encryption.dev.example.com",
"WebsocketURL": "",
"LicenseFileLocation": "",
"ListenAddress": ":8065",
"ConnectionSecurity": "",
"TLSCertFile": "",
"TLSKeyFile": "",
"...":"..."
},
"...":"..."
}
변경 후
{
"ServiceSettings": {
"SiteURL": "https://transport-encryption.dev.example.com",
"WebsocketURL": "",
"LicenseFileLocation": "",
"ListenAddress": ":8065",
"ConnectionSecurity": "TLS",
"TLSCertFile": "/opt/mattermost/config/cert.pem",
"TLSKeyFile": "/opt/mattermost/config/key.pem",
"...":"..."
},
"...":"..."
}
Mattermost 서버를 다시 시작하고 작동하는지 확인합니다 :
$ sudo systemctl art mattermost
$ systemctl status mattermost
● mattermost.service - Mattermost
Loaded: loaded (/lib/systemd/system/mattermost.service; static; vendor preset: enabled)
Active: active (running) since Mon 2019-10-28 16:45:29 UTC; 1h 15min ago
[...]
마지막으로 NGINX 서버 에서 구성을 다시로드하여 요청이 HTTPS로 전송되도록합니다:
$ sudo systemctl reload nginx