Polarity v4 Admin Guide
Polarity v5 Admin Guide
  • Sever Requirements
    • Deployment Methods
      • Deploying Polarity Server on AWS with RDS and Elasticache
      • Deploying Polarity Server Virtual Machine on Azure
      • Deploying via OVA
      • Deploying via RPM
      • Polarity Server BYOL AMI
  • Guides
    • Installing License
    • Authentication
      • SAML
        • Azure ADFS
        • Okta
        • SAML Troublshooting
      • LDAP Troubleshooting
    • Installing Private Certificate Authority
    • Installing SSL Certificate
      • Installing LetsEncrypt SSL Certificate on Polarity Server
    • Configuring a Proxy
    • Migrating Polarity Servers
      • Upgrade PostgreSQL to v13
    • Enabling SMTP
    • Server Environment Variables
    • File System Layout
    • Configuring a FQDN
    • Enabling Source Analytics
      • Elasticsearch
        • Configuring Source Analytics on Elasticsearch
        • Source Analytics Integration with Elasticsearch
    • v5 Server Pre-Flight Upgrade Check
  • Integrations
    • Auto Subscribe CLI Tool
    • Installation
    • Install Multiple Copies of an Integration
    • Modifying Integration Name & Acronym
    • Add Custom Entity Types
Powered by GitBook
On this page
  1. Guides
  2. Installing SSL Certificate

Installing LetsEncrypt SSL Certificate on Polarity Server

The following document walks through installing a LetsEncrypt SSL Certificate on the Polarity Server. Let's Encrypt is a free, automated, and open certificate authority. To be able to use a LetsEncrypt certificate, the Polarity Server must have:

  1. A non-IP fully qualified domain name that is Internet routable (i.e., you must be able to reach your Polarity server from the open Internet and the FQDN cannot be an IP address)

  2. Port 80 must be open when you are requesting the certificate from LetsEncrypt so they can validate ownership of the server.

LetsEncrypt is not a good solution for an SSL certificate if you need to IP whitelist your Polarity Server (e.g., block access using an AWS security group) or if your Polarity Server is on an internal network.

Ensure you have the RHEL/CentOS7 EPEL repo installed

yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

Install CertBot

sudo yum install certbot python2-certbot-nginx

Get a LetsEncrypt certificate

sudo certbot certonly --nginx

To be able to get a certificate you must have port 80 open. Be default, the Polarity Server will listen on port 80 and redirects traffic to port 443

You will be prompted for the FQDN of your Polarity server.

The certificate will be downloaded to /etc/letsencrypt/live/{{FQDN}}/fullchain.pem and the private key will be downloaded to /etc/letsencrypt/live/{{FQDN}}/privkey.pem

Change the permissions on the downloaded certificates so that the polarityd user is able to read them:

chmod -R 755 /etc/letsencrypt

Once the certificates are downloaded, update the Polarity nginx configuration to use the LetsEncrypt certificates instead of the default self-signed certificates. Open the nginx config file with a text editor:

vi /etc/nginx/conf.d/polarity.conf

Next, update ssl_certificate and ssl_certificate_key properties with the new certificate paths:

ssl_certificate /etc/letsencrypt/live/{{FQDN}}/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/{{FQDN}}/privkey.pem;

Replace {{FQDN}} with the correct fully qualified domain name of your Polarity server

After saving the change to the nginx configuration, restart nginx:

systemctl restart nginx

Check to make sure nginx came back up successfully:

systemctl status nginx

After updating the nginx config, you will need to update the Polarity Server configuration to use the new certificates. Open the config file located at /app/polarity-server/config/config.js in a text editor.

vi /app/polarity-server/config/config.js

Find the settings rest.credentials.key and rest.credentials.certificate and update them with the correct key and certificate paths from LetsEncrypt:

"rest": {
   "credentials": {
      "enabled": true,
      "key": "/etc/letsencrypt/live/{{FDQN}}/privkey.pem",
      "certificate": "/etc/letsencrypt/live/{{FQDN}}/fullchain.pem"
   }
}

Save the file and then restart the Polarity Server

systemctl restart polarityd

Check to make sure all Polarity services are running:

/app/polarity-server/scripts/polarity-status.sh

Finally, setup automatic cert renewal of the certificate

echo "0 0,12 * * * root python -c 'import random; import time;\
time.sleep(random.random() * 3600)' && certbot renew -q" | \
sudo tee -a /etc/crontab > /dev/null
PreviousInstalling SSL CertificateNextConfiguring a Proxy

Last updated 2 years ago