Configuring proxy to Mattermost transport encryption

plans-img Enterprise 플랜에서 사용 가능

deployment-img 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