Keep Server Online
  
If you find the Apache Lounge, the downloads and overall help useful, please express your satisfaction with a donation.
  
or
  
 
  
A donation makes a contribution towards the costs, the time and effort that's going in this site and building.
  
Thank You! Steffen
  
Your donations will help to keep this site alive and well, and continuing building binaries. Apache Lounge is not sponsored.
 |    |   
 | 
     Topic: Need Help Setting up SSL - CentOS7 / Apache/2.4.6 | 
 |   
| Author | 
  | 
 
SuperGeorge
 
 
  Joined: 18 May 2020 Posts: 4
 
  | 
 Posted: Thu 16 Jul '20 20:45    Post subject: Need Help Setting up SSL - CentOS7 / Apache/2.4.6 | 
     | 
 
  | 
 
Okay, so I'm really hoping someone can help me, as I've been at this for weeks/months and still can't figure it out.
 
 
I originally posted the issue in a CentOS-7 forum, but I still can't make any headway:
 
https://forums.centos.org/viewtopic.php?f=48&t=73789
 
 
So, I have Apache/2.4.6 running on a CentOS 7 virtual machine on Azure, and it's been happily doing it's thing for several months, with multiple websites on the same IP. More recently I added a new site, with its own IP, which is also working fine. None of the sites currently use SSL.
 
 
Now I'm trying to add SSL for the newer site (and only that one site). I've purchased the certificate through GoDaddy and downloaded the cert and the key, and created two files on the server, as guided by some instructions I found (path names provided below).
 
 
However, I'm a bit stuck on how to proceed from here. Obviously the server already listens on port 80 for all current web traffic, and I somehow need to listen on port 443 for traffic for the one site I need SSL for.
 
 
I did already install mod_ssl:
 
 	  | Code: | 	 		  | $ sudo yum install mod_ssl | 	  
 
 
So I tried just adding "Listen 443" to httpd.conf, below "Listen 80", but the server then failed to start at all:
 
 	  | Code: | 	 		  $ sudo journalctl -xe
 
-- Unit httpd.service has begun starting up.
 
Mar 21 17:14:59 dgbvm httpd[77384]: AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/httpd/conf/httpd.conf:382
 
Mar 21 17:14:59 dgbvm httpd[77384]: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:443
 
Mar 21 17:14:59 dgbvm systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
 
Mar 21 17:14:59 dgbvm kill[77385]: kill: cannot find process ""
 
Mar 21 17:14:59 dgbvm systemd[1]: httpd.service: control process exited, code=exited status=1
 
Mar 21 17:14:59 dgbvm systemd[1]: Failed to start The Apache HTTP Server.
 
-- Subject: Unit httpd.service has failed | 	  
 
 
Also tried just modifying the virtual host section, as below, to listen on 443 (which I didn't expect to work and I was not disappointed):
 
 	  | Code: | 	 		  <VirtualHost 10.0.0.5:443>
 
ServerName blah...
 
ServerAlias www.blah...
 
 
DocumentRoot "/var/www/sites/blah/"
 
...
 
SSLCertificateFile      /etc/httpd/conf/ssl.crt/blah.crt
 
SSLCertificateKeyFile   /etc/httpd/conf/ssl.key/blah.key
 
</VirtualHost> | 	  
 
 
Also added the following above the virtual host section:
 
 	  | Code: | 	 		  | SSLStrictSNIVHostCheck                  on | 	  
 
 
So, I've put the crt and key files into the relevant dirs, amended httpd.conf, checked permissions, and restarted httpd, but it still just defaults to the default domain as soon as I try to do anything with the 443 stuff.
 
 	  | Code: | 	 		  SSLStrictSNIVHostCheck on
 
 
<VirtualHost 10.0.0.5:443>
 
ServerName xxx.com
 
ServerAlias www.xxx.com
 
 
DocumentRoot "/var/www/sites/lac/"
 
 
SSLCertificateFile      /etc/pki/tls/certs/lac.crt
 
SSLCertificateKeyFile   /etc/pki/tls/private/lac.key
 
...
 
...
 
</VirtualHost> | 	  
 
 
 	  | Code: | 	 		  $ ls -l /etc/pki/tls/certs/lac.crt
 
-rw-------. 1 root root 891 Mar 25 15:17 /etc/pki/tls/certs/lac.crt
 
 
$ ls -l /etc/pki/tls/private/lac.key
 
-rw-------. 1 root root 1705 Mar 25 15:19 /etc/pki/tls/private/lac.key
 
 
$ sudo cat /etc/pki/tls/certs/lac.crt
 
-----BEGIN CERTIFICATE REQUEST-----
 
blah ....
 
.....
 
.....
 
.....
 
blah ....
 
-----END CERTIFICATE REQUEST-----
 
 
$ sudo cat /etc/pki/tls/private/lac.key
 
-----BEGIN PRIVATE KEY-----
 
longer...blah ...
 
...
 
...
 
...
 
...
 
-----END PRIVATE KEY----- | 	  
 
 
 I always have SELinux on, but I did temporarily put it into permissive mode, but it made no difference, so presumably it's not an SELinux problem.
 
 
So, checking another config which was provided, I saw that I did not have the "SSLEngine on" directive in my config, so I added it. However, httpd wouldn't even start when I did that, so I took it out again.
 
 
There is additional info' from testing things out on the original CentOS forum post, but I think I've included most of the relevant bits.
 
 
The server appears to be listening on port 443, per below, so I'm sure it must be some sort of Apache config issue. 
 
 	  | Code: | 	 		  $ sudo lsof -i -P -n | grep LISTEN
 
rpcbind    525      rpc    8u  IPv4    16846      0t0  TCP *:111 (LISTEN)
 
rpcbind    525      rpc   11u  IPv6    16849      0t0  TCP *:111 (LISTEN)
 
sshd       862     root    3u  IPv4    20164      0t0  TCP *:22 (LISTEN)
 
sshd       862     root    4u  IPv6    20249      0t0  TCP *:22 (LISTEN)
 
mysqld     889    mysql   17u  IPv6    21462      0t0  TCP *:3306 (LISTEN)
 
master     986     root   13u  IPv4    21159      0t0  TCP 127.0.0.1:25 (LISTEN)
 
master     986     root   14u  IPv6    21160      0t0  TCP [::1]:25 (LISTEN)
 
httpd    44623     root    4u  IPv6 60213351      0t0  TCP *:80 (LISTEN)
 
httpd    44623     root    8u  IPv6 60213359      0t0  TCP *:443 (LISTEN)
 
httpd    44637   apache    4u  IPv6 60213351      0t0  TCP *:80 (LISTEN)
 
httpd    44637   apache    8u  IPv6 60213359      0t0  TCP *:443 (LISTEN)
 
httpd    44713   apache    4u  IPv6 60213351      0t0  TCP *:80 (LISTEN)
 
httpd    44713   apache    8u  IPv6 60213359      0t0  TCP *:443 (LISTEN)
 
httpd    44957   apache    4u  IPv6 60213351      0t0  TCP *:80 (LISTEN)
 
httpd    44957   apache    8u  IPv6 60213359      0t0  TCP *:443 (LISTEN)
 
httpd    44982   apache    4u  IPv6 60213351      0t0  TCP *:80 (LISTEN)
 
httpd    44982   apache    8u  IPv6 60213359      0t0  TCP *:443 (LISTEN)
 
httpd    45708   apache    4u  IPv6 60213351      0t0  TCP *:80 (LISTEN)
 
httpd    45708   apache    8u  IPv6 60213359      0t0  TCP *:443 (LISTEN)
 
httpd    45760   apache    4u  IPv6 60213351      0t0  TCP *:80 (LISTEN)
 
httpd    45760   apache    8u  IPv6 60213359      0t0  TCP *:443 (LISTEN)
 
httpd    45763   apache    4u  IPv6 60213351      0t0  TCP *:80 (LISTEN)
 
httpd    45763   apache    8u  IPv6 60213359      0t0  TCP *:443 (LISTEN)
 
httpd    45778   apache    4u  IPv6 60213351      0t0  TCP *:80 (LISTEN)
 
httpd    45778   apache    8u  IPv6 60213359      0t0  TCP *:443 (LISTEN)
 
httpd    45784   apache    4u  IPv6 60213351      0t0  TCP *:80 (LISTEN)
 
httpd    45784   apache    8u  IPv6 60213359      0t0  TCP *:443 (LISTEN)
 
httpd    45785   apache    4u  IPv6 60213351      0t0  TCP *:80 (LISTEN)
 
httpd    45785   apache    8u  IPv6 60213359      0t0  TCP *:443 (LISTEN) | 	  
 
 
I've never done SSL before, despite twenty odd years of messing around with Apache servers, so it's quite possible I'm doing something/missing something really basic, not knowing any different. Anyway, I am really desperate to get this working now and would deeply appreciate assistance.
 
 
Many thanks! | 
 
  | 
 
| Back to top | 
 | 
 
mraddi
 
 
  Joined: 27 Jun 2016 Posts: 152 Location: Schömberg, Baden-Württemberg, Germany
  | 
 Posted: Fri 17 Jul '20 12:08    Post subject:  | 
     | 
 
  | 
 
Hello,
 
 
plese ensure that the certificate + key are readable by the Apache-process (if it is not readable there should be a message within Apache's error.log - this file is always a good point to start for with troubleshooting  )
 
 
But something else that catches my eye is the lac.crt-file. According to the content you have posted it is only the CSR (certificate signing request) instead of the signed certificate.
 
If should be something like
 
 	  | Code: | 	 		  -----BEGIN CERTIFICATE-----
 
blah...
 
...
 
blah...
 
-----END CERTIFICATE----- | 	  
 
instead of
 
 	  | Code: | 	 		  -----BEGIN CERTIFICATE REQUEST-----
 
blah ....
 
.....
 
.....
 
.....
 
blah ....
 
-----END CERTIFICATE REQUEST----- | 	  
 
 
Best regards
 
  Matthias   | 
 
  | 
 
| Back to top | 
 | 
 
SuperGeorge
 
 
  Joined: 18 May 2020 Posts: 4
 
  | 
 Posted: Fri 17 Jul '20 15:19    Post subject:  | 
     | 
 
  | 
 
Yeah, I think those permissions should be okay, and the certificate does indeed look as you suggest it should. I believe what I posted was what I had in the original post on the CentOS7 forum. I should have updated it here, but alas. Anyway, currently the cert file does look like:
 
 	  | Code: | 	 		  -----BEGIN CERTIFICATE-----
 
blah...
 
...
 
blah...
 
-----END CERTIFICATE----- | 	 
  | 
 
  | 
 
| Back to top | 
 | 
 
mraddi
 
 
  Joined: 27 Jun 2016 Posts: 152 Location: Schömberg, Baden-Württemberg, Germany
  | 
 Posted: Fri 17 Jul '20 19:37    Post subject:  | 
     | 
 
  | 
 
Hello,
 
 
on a linux you can check with
 
 	  | Code: | 	 		  | sudo netstat -tulpn | 	  
 
which process is already listening on port 443. | 
 
  | 
 
| Back to top | 
 | 
 
SuperGeorge
 
 
  Joined: 18 May 2020 Posts: 4
 
  | 
 Posted: Fri 17 Jul '20 20:02    Post subject:  | 
     | 
 
  | 
 
Turns out that the 443 error was because the "Listen 443" directive is already defined in ssl.conf. (I actually removed that part of my comment, but I guess you noticed it before I did that).
 
Anyway:
 
 	  | Code: | 	 		  sudo netstat -tulpn
 
Active Internet connections (only servers)
 
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
 
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      34873/master
 
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      35149/rpcbind
 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      34700/sshd
 
tcp6       0      0 ::1:25                  :::*                    LISTEN      34873/master
 
tcp6       0      0 :::443                  :::*                    LISTEN      50502/httpd
 
tcp6       0      0 :::3306                 :::*                    LISTEN      34627/mysqld
 
tcp6       0      0 :::111                  :::*                    LISTEN      35149/rpcbind
 
tcp6       0      0 :::80                   :::*                    LISTEN      50502/httpd
 
tcp6       0      0 :::22                   :::*                    LISTEN      34700/sshd
 
udp        0      0 127.0.0.1:323           0.0.0.0:*                           35017/chronyd
 
udp        0      0 0.0.0.0:980             0.0.0.0:*                           35149/rpcbind
 
udp        0      0 0.0.0.0:111             0.0.0.0:*                           35149/rpcbind
 
udp6       0      0 ::1:323                 :::*                                35017/chronyd
 
udp6       0      0 :::980                  :::*                                35149/rpcbind
 
udp6       0      0 :::111                  :::*                                35149/rpcbind | 	 
  | 
 
  | 
 
| Back to top | 
 | 
 
SuperGeorge
 
 
  Joined: 18 May 2020 Posts: 4
 
  | 
 Posted: Sat 18 Jul '20 1:16    Post subject:  | 
     | 
 
  | 
 
Okay, so I actually ended up getting this working. Needed to create a CSR file and get the certificate re-issued. 
 
It's now pretty much working as I wish it to.
 
Thanks. | 
 
  | 
 
| Back to top | 
 | 
 
 
 
 
 | 
 
 
 |  
 
 |  
  |   
 |