I have installed the VMWare appliance, downloaded from http://docs.graylog.org/en/latest/pages/installation/virtual_machine_appliances.html version 1.2.1 I have installed it and recieving logs works fine. The problem I am having is when trying to enable HTTPS. This is a feature I see as standard when setting up a new server where users login.
So there seems to be two parts to this. First create a java keystore. This I have done withouth problems. The next part is where to actually change the port to 443, enable HTTPS, and define the keystore and its password. I have looked at the following guide: https://groups.google.com/forum/#!topic/graylog2/h9tgxGN8yoQ Seems you need to edit the init script and modify the parameters: * -Dhttps.port=443 * *-Dhttps.keyStore="/opt/graylog2/key/graylog2.keystore" * *-Dhttps.keyStorePassword="XXXXX" * *-Dhttp.port=disabled* Now when I run: ps aux I can see that the process /opt/graylog/embedded/jre/bin/java is started by the user graylog, and it contains for example the parameter: -Dhttp.port=9000 -Dhttp.address=0.0.0.0 But where is this process started from? I checked /etc/init.d/ of course, but there is no graylog there. root@HOSTNAME:/opt/graylog/conf# ls -l /etc/init.d/ total 156 -rwxr-xr-x 1 root root 4596 Apr 24 22:13 apparmor -rwxr-xr-x 1 root root 1919 Jan 18 2011 console-setup lrwxrwxrwx 1 root root 21 Sep 22 15:17 cron -> /lib/init/upstart-job -rwxr-xr-x 1 root root 2813 Nov 25 2014 dbus -rwxr-xr-x 1 root root 1217 Mar 7 2013 dns-clean lrwxrwxrwx 1 root root 21 Mar 14 2012 friendly-recovery -> /lib/init/upstart-job -rwxr-xr-x 1 root root 1105 May 13 16:51 grub-common -rwxr-xr-x 1 root root 1329 Mar 13 2014 halt -rwxr-xr-x 1 root root 1864 Nov 12 2012 irqbalance -rwxr-xr-x 1 root root 1293 Mar 13 2014 killprocs -rwxr-xr-x 1 root root 1990 Jan 22 2013 kmod -rwxr-xr-x 1 root root 4479 Mar 20 2014 networking -rwxr-xr-x 1 root root 1818 Apr 3 2013 ntp -rwxr-xr-x 1 root root 1346 Mar 13 2015 ondemand -rwxr-xr-x 1 root root 1466 Mar 11 2014 open-vm-tools -rwxr-xr-x 1 root root 561 Apr 21 2015 pppd-dns -rwxr-xr-x 1 root root 1192 May 27 2013 procps -rwxr-xr-x 1 root root 6120 Mar 13 2014 rc -rwxr-xr-x 1 root root 782 Mar 13 2014 rc.local -rwxr-xr-x 1 root root 117 Mar 13 2014 rcS -rw-r--r-- 1 root root 2427 Mar 13 2014 README -rwxr-xr-x 1 root root 639 Mar 13 2014 reboot -rwxr-xr-x 1 root root 2918 Jun 13 2014 resolvconf -rwxr-xr-x 1 root root 4395 Apr 17 2014 rsync -rwxr-xr-x 1 root root 2913 Dec 4 2013 rsyslog -rwxr-xr-x 1 root root 3920 Mar 13 2014 sendsigs -rwxr-xr-x 1 root root 590 Mar 13 2014 single -rw-r--r-- 1 root root 4290 Mar 13 2014 skeleton -rwxr-xr-x 1 root root 4077 May 2 2014 ssh -rwxr-xr-x 1 root root 731 Feb 5 2014 sudo -rwxr-xr-x 1 root root 6173 Apr 14 2014 udev -rwxr-xr-x 1 root root 2721 Mar 13 2014 umountfs -rwxr-xr-x 1 root root 2260 Mar 13 2014 umountnfs.sh -rwxr-xr-x 1 root root 1872 Mar 13 2014 umountroot -rwxr-xr-x 1 root root 3111 Mar 13 2014 urandom root@SRVSEOPSSYSLOG01:/opt/graylog/conf# I have tried to grep for some of the parameters in all files in the filesystem. I found some interesting files here: /opt/graylog/sv/graylog-web/run It had a line with: exec chpst -P -U graylog -u graylog /opt/graylog/web/bin/graylog-web-interface -Dconfig.file=/opt/graylog/conf/graylog-web-interface.conf -Dhttp.port=9000 -Dhttp.address=0.0.0.0 -Dpidfile.path=/var/opt/graylog/web.pid -Dlogger.file=/opt/graylog/conf/web-logger.xml I changed this to 9001 and did: graylogctl reconfigure The port stays at 9000 and when I check the file again it has changed back to 9000. So this configuration must be in some other file. Ok, so when running graylogctl reconfigure I noticed that its running chef. So eventually I found a folder called: /opt/graylog/embedded/cookbooks/graylog/templates/default In here was a file called sv-graylog-web-run.erb With a line saying exec chpst -P -U <%= node['graylog']['user']['username'] %> -u <%= node['graylog']['user']['username'] %> <%= @options[:install_directory] %>/web/bin/<%= @options[:web_jar] %> -Dconfig.file=<%= @options[:install_directory] %>/conf/graylog-web-interface.conf -Dhttp.port=<%= node['graylog']['graylog-web']['port'] %> -Dhttp.address=<%= @options[:bind_address] %> -Dpidfile.path=<%= node['graylog']['var_directory'] %>/web.pid -Dlogger.file=/opt/graylog/conf/web-logger.xml Ok so here we have some options. We can either overwrite it staticly, or understand where it gets the variables from. Lets do it the easy way, so we change it to: exec chpst -P -U <%= node['graylog']['user']['username'] %> -u <%= node['graylog']['user']['username'] %> <%= @options[:install_directory] %>/web/bin/<%= @options[:web_jar] %> -Dconfig.file=<%= @options[:install_directory] %>/conf/graylog-web-interface.conf -Dhttp.port=disabled -Dhttp.address=<%= @options[:bind_address] %> -Dhttps.port=443 -Dhttps.keyStore="/opt/graylog-key/KEYSTOREFILE" -Dhttps.keyStorePassword="PASSWORD" -Dpidfile.path=<%= node['graylog']['var_directory'] %>/web.pid -Dlogger.file=/opt/graylog/conf/web-logger.xml then we run graylogctl reconfigure Ok, partial success now. It replies on 443 but it has a standard certificate with commonName "graylog". Strange. Or well, I didnt actually try before I made the change. So I reverted the configuration and did graylogctl reconfigure again. Try HTTPS. Same as before, works but with a self-signed certificate. Ok, so if I can find this certificate, then I could maybe replace it, or where is this configured? netstat -tulpn shows tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 1855/nginx.conf tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1855/nginx.conf So nothing is actually listening to port 9000? And we seem to come to the same server regardless if we do port 9000, 80 or HTTPS on 443. At least 80 and 443 seem to be handeled by nginx.conf, so lets continue the search there. /opt/graylog/conf/nginx/nginx.conf >From the configuration it seems its proxying 80 and 443 to localhost :9000 proxy_pass http://localhost:9000/; So the mission is more clear We now want to: Disable port 80 on nginx Only have port 9000 listen on localhost Set a correct certificate on port 443 but in nginx ssl on; ssl_certificate /opt/graylog/conf/nginx/ca/graylog.crt; ssl_certificate_key /opt/graylog/conf/nginx/ca/graylog.key; Ok, so now we need to redo the SSL, since we do not use a java keystore here. openssl req -newkey rsa:2048 -nodes -keyout server.key -out server.csr Send the CSR file to the CA, and get a certificate back. Now we have one keyfile and one certificate file, that we can replace the default ones with. Files replaced. Now lets kill nginx and then run graylogctl reconfigure root@HOSTNAME:/opt/graylog/conf/nginx/ca# killall nginx root@HOSTNAME:/opt/graylog/conf/nginx/ca# killall nginx root@HOSTNAME:/opt/graylog/conf/nginx/ca# killall nginx nginx: no process found After running graylogctl reconfigure it works! Now we need to get rid of port 9000 and port 80 I tried to change /opt/graylog/conf/nginx/nginx.conf directly but it was overwritten by chef, so we need to find the correct cookbook and edit it there Edit the /opt/graylog/embedded/cookbooks/graylog/templates/default/nginx.conf.erb and remove the if to enable the 301 redirect to HTTPS (dont forget the end part) Now the final thing is to make it stop listning in port 9000 I tried to change the file: /opt/graylog/embedded/cookbooks/graylog/templates/default/ sv-graylog-web-run.erb and set -Dhttp.address=127.0.0.1 But it still listened to port 9000 from the outside. In the end I just did iptables -A INPUT -p tcp -s localhost --dport 9000 -j ACCEPT iptables -A INPUT -p tcp --dport 9000 -j DROP Sorry for the rant and the unstructured post, but maybe someone else can find useful information here. Would be kind of nice if this information was in the documentation, but I couldnt find any reference. -- You received this message because you are subscribed to the Google Groups "Graylog Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to graylog2+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/graylog2/e096db9a-1cc4-422a-a6fe-25ff431feeb5%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.