Secure Opsview Monitor with SSL Certificate

LetsEncrypt

If your Opsview Monitor web interface is public facing, securing your site with LetsEncrypt is likely the easiest solution.

Apache Configuration

Display your current Apache configuration with httpd:

[root@opsview ~]# httpd -S
VirtualHost configuration:
*:80                   opsview.pikedom.com (/etc/httpd/conf.d/opsview.conf:4)
*:443                  opsview.pikedom.com (/etc/httpd/conf.d/ssl.conf:56)
...

Edit your Apache configuration:

[root@opsview ~]# vim /etc/httpd/conf.d/opsview.conf

And add a FQDN:

<VirtualHost *:80>
  ServerName opsview.pikedom.com
  Include /opt/opsview/webapp/etc/apache_proxy.conf
</VirtualHost>

Check for syntax errors and restart Apache:

[root@opsview ~]# httpd -t
Syntax OK
[root@opsview ~]# systemctl restart httpd

Install LetsEncrypt

Before we can install LetsEncrypt, we need to enable the epel repository:

[root@opsview ~]# yum install epel-release

Install LetsEncrypt with:

[root@opsview ~]# yum install python2-certbot-apache

Run the certbot:

[root@opsview ~]# certbot --apache

This will generate the new certificate and edit your Apache configuration accordingly.

Amend Apache Configuration

Here I tidy-up the Apache configuration a bit. You’ll probably have something that looks something like this:

[root@opsview ~]# httpd -S
VirtualHost configuration:
*:80                   opsview.pikedom.com (/etc/httpd/conf.d/opsview.conf:4)
*:443                  is a NameVirtualHost
         default server opsview.pikedom.com (/etc/httpd/conf.d/opsview-le-ssl.conf:2)
         port 443 namevhost opsview.pikedom.com (/etc/httpd/conf.d/opsview-le-ssl.conf:2)
         port 443 namevhost opsview.pikedom.com (/etc/httpd/conf.d/ssl.conf:56)
...

Create a new file for your Apache configuration:

[root@opsview ~]# touch /etc/httpd/conf.d/opsview.pikedom.com.conf

Combine the secure and non-secure Apache configuration files into one.

[root@ovmon ~]# cat /etc/httpd/conf.d/opsview.conf /etc/httpd/conf.d/opsview-le-ssl.conf >> /etc/httpd/conf.d/ovmon.opsview.com.conf

Amend further if necessary. My configure looks like so:

[root@opsview ~]# cat /etc/httpd/conf.d/opsview.pikedom.com.conf
<VirtualHost *:80>
  ServerName opsview.pikedom.com
  Include /opt/opsview/webapp/etc/apache_proxy.conf
  RewriteEngine on
  RewriteCond %{SERVER_NAME} =opsview.pikedom.com
  RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost *:443>
  ServerName opsview.pikedom.com
  Include /opt/opsview/webapp/etc/apache_proxy.conf
  SSLCertificateFile /etc/letsencrypt/live/opsview.pikedom.com/cert.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/opsview.pikedom.com/privkey.pem
  Include /etc/letsencrypt/options-ssl-apache.conf
  SSLCertificateChainFile /etc/letsencrypt/live/opsview.pikedom.com/chain.pem
</VirtualHost>
</IfModule>

Remove the old configuration files:

[root@opsview ~]# mkdir -v ~/apache-backup
mkdir: created directory ‘/root/apache-backup’
[root@ovmon ~]# mv -v /etc/httpd/conf.d/{opsview.conf,opsview-le-ssl.conf} ~/apache-backup/
‘/etc/httpd/conf.d/opsview.conf’ -> ‘/root/apache-backup/opsview.conf’
‘/etc/httpd/conf.d/opsview-le-ssl.conf’ -> ‘/root/apache-backup/opsview-le-ssl.conf’

My final configuration looks like this:

[root@opsview ~]# httpd -S
VirtualHost configuration:
*:80                   opsview.pikedom.com (/etc/httpd/conf.d/opsview.pikedom.com.conf:5)
*:443                  is a NameVirtualHost
         default server opsview.pikedom.com (/etc/httpd/conf.d/opsview.pikedom.com.conf:14)
         port 443 namevhost opsview.pikedom.com (/etc/httpd/conf.d/opsview.pikedom.com.conf:14)
         port 443 namevhost opsview.pikedom.com (/etc/httpd/conf.d/ssl.conf:56)
...

Don’t forget to check for syntax errors and restart Apache:

[root@ovmon ~]# httpd -t
Syntax OK
[root@ovmon ~]# systemctl restart httpd

If you need to restart Opsview Monitor, run:

/opt/opsview/watchdog/bin/opsview-monit restart all

And watch it come back up with:

watch -n1 /opt/opsview/watchdog/bin/opsview-monit summary -B

Press ctrl + c to exit watch.

Manually Install SSL Certificate

If you have already obtained an SSL certificate, you will need to manually install the certificate. See below for more information on this.

https://knowledge.opsview.com/docs/customization#section-apache-ssl-config

Be the first to comment

Leave a Reply