All vhosts work however the first vhost and my main domain wont work

Hi
My domain is:welcometohmp.com
I have a rocky linux vps and setup everything fine and certbot worked for my other domains *.com.au, *.uk and *.co.uk however the main domain welcometohmp.com seems to be not working. Is it possible that the main domain is looking for the ssl cert in a different directory to the others or something?
im using apache on rocky linux my httpd.conf looks like this;

<VirtualHost *:80>
    ServerName welcometohmp.com
    ServerAlias www.welcometohmp.com
    DocumentRoot /var/www/html/
    <Directory /var/www/html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>
    ErrorLog /var/log/httpd/wthmp.com.info-error.log
    CustomLog /var/log/httpd/wthmp.com.info-access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =welcometohmp.com [OR]
RewriteCond %{SERVER_NAME} =www.welcometohmp.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<VirtualHost *:80>
    ServerName welcometohmp.co.uk
    ServerAlias www.welcometohmp.co.uk
    DocumentRoot /var/www/wthmp.co.uk/
    <Directory /var/www/wthmp.co.uk>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>
    ErrorLog /var/log/httpd/wthmp.co.uk.info-error.log
    CustomLog /var/log/httpd/wthmp.co.uk.info-access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =welcometohmp.co.uk [OR]
RewriteCond %{SERVER_NAME} =www.welcometohmp.co.uk
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

Its got me baffled why all the other vhosts work however the main one doesn't, please help and I can post more info if required, I did have a look at the *le-ssl.conf file and interestingly enough it doesnt have the main domain there but i tried adding it and still no luck. Please help
t
certbot --version
certbot 2.6.0

1 Like

Welcome @aussi

If you add 3 backticks before and after the Apache VirtualHost it will format properly

Like
```
apache config
```
We should look at output of this

sudo apache2ctl -t -D DUMP_VHOSTS

You may need to use apachectl or even httpd instead of apache2ctl
And, omit sudo if not needed

Please show the Certbot command you used.
Note that TLS-ALPN is not supported by Certbot. So, that Let's Debug test is not helpful for this case.

4 Likes

https://welcometohmp.co.uk/
Shows a good certificate:

https://www.welcometohmp.co.uk/
Shows a good certificate:

As far as I can see there are no additional domains needing a certificate here.
Good Job Mike!

2 Likes

I didn't actually do anything (yet) :slight_smile:

They had gotten a cert much earlier today with all 4 domain name sets in it. But, only 7 of the 8 domain names returns the correct cert.

The www.welcometohmp.com uses a self-signed cert.

We should still look at what this shows

sudo apache2ctl -t -D DUMP_VHOSTS

Also, of the 4 sets there are 3 different home pages. That's not necessarily wrong but it is unusual. The pages are very different. That's not directly related to the cert and maybe that's how they want it. Interesting that the two .com domain names do return the same page it is just the www .com one uses the wrong cert.

It shouldn't take too long to sort out though once we see the dump_vhosts output.

3 Likes

hey mike thanks for the reply. I used certbot --apache
sudo httpd -t -D DUMP_VHOSTS

VirtualHost configuration:
*:80                   is a NameVirtualHost
         default server welcometohmp.com (/etc/httpd/conf/httpd.conf:85)
         port 80 namevhost welcometohmp.com (/etc/httpd/conf/httpd.conf:85)
                 alias www.welcometohmp.com
         port 80 namevhost welcometohmp.co.uk (/etc/httpd/conf/httpd.conf:100)
                 alias www.welcometohmp.co.uk
         port 80 namevhost welcometohmp.uk (/etc/httpd/conf/httpd.conf:115)
                 alias www.welcometohmp.uk
         port 80 namevhost welcometohmp.com.au (/etc/httpd/conf/httpd.conf:130)
                 alias www.welcometohmp.com.au
*:443                  is a NameVirtualHost
         default server www.welcometohmp.com (/etc/httpd/conf.d/ssl.conf:40)
         port 443 namevhost www.welcometohmp.com (/etc/httpd/conf.d/ssl.conf:40)
         port 443 namevhost welcometohmp.co.uk (/etc/httpd/conf/httpd-le-ssl.conf:2)
                 alias www.welcometohmp.co.uk
         port 443 namevhost welcometohmp.com.au (/etc/httpd/conf/httpd-le-ssl.conf:19)
                 alias www.welcometohmp.com.au
         port 443 namevhost welcometohmp.com (/etc/httpd/conf/httpd-le-ssl.conf:36)
                 alias www.welcometohmp.com
         port 443 namevhost welcometohmp.uk (/etc/httpd/conf/httpd-le-ssl.conf:53)
                 alias www.welcometohmp.uk

looks like the main vhost is reading from the wrong ssl file should i just change the conf.d/ssl.conf to include something like this
SSLCertificateFile /etc/letsencrypt/live/welcometohmp.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/welcometohmp.com/privkey.pem
instead of where its trying to read the cert from?

Im not sure you read the original post, the main VHOST welcometohmp.com isnt working however the rest of the domians are?

2 Likes

I sent it a few minutes ago?

1 Like

No, I would not recommend that. You have that www...com sub domain defined in two different virtual hosts for port 443. It probably works fine in the second one where it is listed as an alias to the .com root name.

You could change www...com servername in ssl.conf vhost at line 40 to something like default.server. Then you keep all the common ssl options in that file and let that be handled by the httpd-le-ssl config file

Without seeing those I am guessing a little but this is likely to work and has little risk of damaging anything. If you post the contents of both of those files we can say for sure. Use the three backticks before and after to preserve the formatting

3 Likes

Visually, you can see how these three sets of names all "group" nicely:

port 80  namevhost welcometohmp.co.uk (/etc/httpd/conf/httpd.conf:100)
         alias www.welcometohmp.co.uk
port 443 namevhost welcometohmp.co.uk (/etc/httpd/conf/httpd-le-ssl.conf:2)
         alias www.welcometohmp.co.uk
port 80  namevhost welcometohmp.uk (/etc/httpd/conf/httpd.conf:115)
         alias www.welcometohmp.uk
port 443 namevhost welcometohmp.uk (/etc/httpd/conf/httpd-le-ssl.conf:53)
         alias www.welcometohmp.uk
port 80  namevhost welcometohmp.com.au (/etc/httpd/conf/httpd.conf:130)
         alias www.welcometohmp.com.au
port 443 namevhost welcometohmp.com.au (/etc/httpd/conf/httpd-le-ssl.conf:19)
         alias www.welcometohmp.com.au

And this set of names do not:

port 80 namevhost welcometohmp.com (/etc/httpd/conf/httpd.conf:85)
        alias www.welcometohmp.com
port 443 namevhost www.welcometohmp.com (/etc/httpd/conf.d/ssl.conf:40)
port 443 namevhost welcometohmp.com (/etc/httpd/conf/httpd-le-ssl.conf:36)
         alias www.welcometohmp.com

Where, as @MikeMcQ stated,

There is clearly a name:port overlap with "www.welcometohmp.com:443".
And that is very likely the only thing left for you to fix.

4 Likes

Yes, I should have said two different virtual hosts for port 443 (which is 3 VirtualHosts total). I updated my comment to make that clearer.

My instructions should still work though since I was describing the changes to the port 443 VirtualHosts

3 Likes

this is very frustrating but thank you for helping below is httpd-le-ssl.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName welcometohmp.co.uk
    ServerAlias www.welcometohmp.co.uk
    DocumentRoot /var/www/wthmp.co.uk/
    <Directory /var/www/wthmp.co.uk>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>
    ErrorLog /var/log/httpd/wthmp.co.uk.info-error.log
    CustomLog /var/log/httpd/wthmp.co.uk.info-access.log combined

Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/welcometohmp.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/welcometohmp.com/privkey.pem
</VirtualHost>
</IfModule>
<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName welcometohmp.com.au
    ServerAlias www.welcometohmp.com.au
    DocumentRoot /var/www/wthmp.au/
    <Directory /var/www/wthmp.au>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>
    ErrorLog /var/log/httpd/wthmp.au.info-error.log
    CustomLog /var/log/httpd/wthmp.au.info-access.log combined

Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/welcometohmp.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/welcometohmp.com/privkey.pem
</VirtualHost>
</IfModule>
<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName welcometohmp.com
    ServerAlias www.welcometohmp.com
    DocumentRoot /var/www/html/
    <Directory /var/www/wthmp.com>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>
    ErrorLog /var/log/httpd/wthmp.com.info-error.log
    CustomLog /var/log/httpd/wthmp.com.info-access.log combined

Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/welcometohmp.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/welcometohmp.com/privkey.pem
</VirtualHost>
</IfModule>
<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName welcometohmp.uk
    ServerAlias www.welcometohmp.uk
    DocumentRoot /var/www/wthmp.uk/
    <Directory /var/www/wthmp.uk>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>
    ErrorLog /var/log/httpd/wthmp.uk.info-error.log
    CustomLog /var/log/httpd/wthmp.uk.info-access.log combined

Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/welcometohmp.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/welcometohmp.com/privkey.pem
</VirtualHost>
</IfModule>

below is ssl.conf

cat ssl.conf
#
# When we also provide SSL we have to listen to the
# standard HTTPS port in addition.
#
Listen 443 https

##
##  SSL Global Context
##
##  All SSL configuration in this context applies both to
##  the main server and all SSL-enabled virtual hosts.
##

#   Pass Phrase Dialog:
#   Configure the pass phrase gathering process.
#   The filtering dialog program (`builtin' is a internal
#   terminal dialog) has to provide the pass phrase on stdout.
SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog

#   Inter-Process Session Cache:
#   Configure the SSL Session Cache: First the mechanism
#   to use and second the expiring timeout (in seconds).
SSLSessionCache         shmcb:/run/httpd/sslcache(512000)
SSLSessionCacheTimeout  300

#
# Use "SSLCryptoDevice" to enable any supported hardware
# accelerators. Use "openssl engine -v" to list supported
# engine names.  NOTE: If you enable an accelerator and the
# server does not start, consult the error logs and ensure
# your accelerator is functioning properly.
#
SSLCryptoDevice builtin
#SSLCryptoDevice ubsec

##
## SSL Virtual Host Context
##

<VirtualHost _default_:443>

# General setup for the virtual host, inherited from global configuration
#DocumentRoot "/var/www/html"
#ServerName www.welcometohmp.com:443

# Use separate log files for the SSL virtual host; note that LogLevel
# is not inherited from httpd.conf.
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn

#   SSL Engine Switch:
#   Enable/Disable SSL for this virtual host.
SSLEngine on

#   List the protocol versions which clients are allowed to connect with.
#   The OpenSSL system profile is used by default.  See
#   update-crypto-policies(8) for more details.
#SSLProtocol all -SSLv3
#SSLProxyProtocol all -SSLv3

#   User agents such as web browsers are not configured for the user's
#   own preference of either security or performance, therefore this
#   must be the prerogative of the web server administrator who manages
#   cpu load versus confidentiality, so enforce the server's cipher order.
SSLHonorCipherOrder on

#   SSL Cipher Suite:
#   List the ciphers that the client is permitted to negotiate.
#   See the mod_ssl documentation for a complete list.
#   The OpenSSL system profile is configured by default.  See
#   update-crypto-policies(8) for more details.
SSLCipherSuite PROFILE=SYSTEM
SSLProxyCipherSuite PROFILE=SYSTEM

#   Point SSLCertificateFile at a PEM encoded certificate.  If
#   the certificate is encrypted, then you will be prompted for a
#   pass phrase.  Note that restarting httpd will prompt again.  Keep
#   in mind that if you have both an RSA and a DSA certificate you
#   can configure both in parallel (to also allow the use of DSA
#   ciphers, etc.)
#   Some ECC cipher suites (http://www.ietf.org/rfc/rfc4492.txt)
#   require an ECC certificate which can also be configured in
#   parallel.
SSLCertificateFile /etc/pki/tls/certs/localhost.crt

#   Server Private Key:
#   If the key is not combined with the certificate, use this
#   directive to point at the key file.  Keep in mind that if
#   you've both a RSA and a DSA private key you can configure
#   both in parallel (to also allow the use of DSA ciphers, etc.)
#   ECC keys, when in use, can also be configured in parallel
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

#   Server Certificate Chain:
#   Point SSLCertificateChainFile at a file containing the
#   concatenation of PEM encoded CA certificates which form the
#   certificate chain for the server certificate. Alternatively
#   the referenced file can be the same as SSLCertificateFile
#   when the CA certificates are directly appended to the server
#   certificate for convenience.
#SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt

#   Certificate Authority (CA):
#   Set the CA certificate verification path where to find CA
#   certificates for client authentication or alternatively one
#   huge file containing all of them (file must be PEM encoded)
#SSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt

#   Client Authentication (Type):
#   Client certificate verification type and depth.  Types are
#   none, optional, require and optional_no_ca.  Depth is a
#   number which specifies how deeply to verify the certificate
#   issuer chain before deciding the certificate is not valid.
#SSLVerifyClient require
#SSLVerifyDepth  10

#   Access Control:
#   With SSLRequire you can do per-directory access control based
#   on arbitrary complex boolean expressions containing server
#   variable checks and other lookup directives.  The syntax is a
#   mixture between C and Perl.  See the mod_ssl documentation
#   for more details.
#<Location />
#SSLRequire (    %{SSL_CIPHER} !~ m/^(EXP|NULL)/ \
#            and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd." \
#            and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"} \
#            and %{TIME_WDAY} >= 1 and %{TIME_WDAY} <= 5 \
#            and %{TIME_HOUR} >= 8 and %{TIME_HOUR} <= 20       ) \
#           or %{REMOTE_ADDR} =~ m/^192\.76\.162\.[0-9]+$/
#</Location>

#   SSL Engine Options:
#   Set various options for the SSL engine.
#   o FakeBasicAuth:
#     Translate the client X.509 into a Basic Authorisation.  This means that
#     the standard Auth/DBMAuth methods can be used for access control.  The
#     user name is the `one line' version of the client's X.509 certificate.
#     Note that no password is obtained from the user. Every entry in the user
#     file needs this password: `xxj31ZMTZzkVA'.
#   o ExportCertData:
#     This exports two additional environment variables: SSL_CLIENT_CERT and
#     SSL_SERVER_CERT. These contain the PEM-encoded certificates of the
#     server (always existing) and the client (only existing when client
#     authentication is used). This can be used to import the certificates
#     into CGI scripts.
#   o StdEnvVars:
#     This exports the standard SSL/TLS related `SSL_*' environment variables.
#     Per default this exportation is switched off for performance reasons,
#     because the extraction step is an expensive operation and is usually
#     useless for serving static content. So one usually enables the
#     exportation for CGI and SSI requests only.
#   o StrictRequire:
#     This denies access when "SSLRequireSSL" or "SSLRequire" applied even
#     under a "Satisfy any" situation, i.e. when it applies access is denied
#     and no other module can change it.
#   o OptRenegotiate:
#     This enables optimized SSL connection renegotiation handling when SSL
#     directives are used in per-directory context.
#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/var/www/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

#   SSL Protocol Adjustments:
#   The safe and default but still SSL/TLS standard compliant shutdown
#   approach is that mod_ssl sends the close notify alert but doesn't wait for
#   the close notify alert from client. When you need a different shutdown
#   approach you can use one of the following variables:
#   o ssl-unclean-shutdown:
#     This forces an unclean shutdown when the connection is closed, i.e. no
#     SSL close notify alert is sent or allowed to be received.  This violates
#     the SSL/TLS standard but is needed for some brain-dead browsers. Use
#     this when you receive I/O errors because of the standard approach where
#     mod_ssl sends the close notify alert.
#   o ssl-accurate-shutdown:
#     This forces an accurate shutdown when the connection is closed, i.e. a
#     SSL close notify alert is sent and mod_ssl waits for the close notify
#     alert of the client. This is 100% SSL/TLS standard compliant, but in
#     practice often causes hanging connections with brain-dead browsers. Use
#     this only for browsers where you know that their SSL implementation
#     works correctly.
#   Notice: Most problems of broken clients are also related to the HTTP
#   keep-alive facility, so you usually additionally want to disable
#   keep-alive for those clients, too. Use variable "nokeepalive" for this.
#   Similarly, one has to force some clients to use HTTP/1.0 to workaround
#   their broken HTTP/1.1 implementation. Use variables "downgrade-1.0" and
#   "force-response-1.0" for this.
BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

#   Per-Server Logging:
#   The home of a custom SSL log file. Use this when you want a
#   compact non-error SSL logfile on a virtual host basis.
CustomLog logs/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

</VirtualHost>

[admin@NickTee conf.d]$ w
 22:08:55 up 1 day, 15:21,  1 user,  load average: 0.05, 0.01, 0.00
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
admin    pts/0     21:59    0.00s  0.02s  0.00s w
[admin@NickTee conf.d]$ ls
README          php.conf         phpmyadmin.conf  ssl.conf.orig  welcome.conf
autoindex.conf  phpMyAdmin.conf  ssl.conf         userdir.conf
[admin@NickTee conf.d]$ cd ../conf
[admin@NickTee conf]$ ls
httpd-le-ssl.conf  httpd.conf  httpd.conf.orig  magic
[admin@NickTee conf]$ cat *ssl.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName welcometohmp.co.uk
    ServerAlias www.welcometohmp.co.uk
    DocumentRoot /var/www/wthmp.co.uk/
    <Directory /var/www/wthmp.co.uk>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>
    ErrorLog /var/log/httpd/wthmp.co.uk.info-error.log
    CustomLog /var/log/httpd/wthmp.co.uk.info-access.log combined

Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/welcometohmp.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/welcometohmp.com/privkey.pem
</VirtualHost>
</IfModule>
<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName welcometohmp.com.au
    ServerAlias www.welcometohmp.com.au
    DocumentRoot /var/www/wthmp.au/
    <Directory /var/www/wthmp.au>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>
    ErrorLog /var/log/httpd/wthmp.au.info-error.log
    CustomLog /var/log/httpd/wthmp.au.info-access.log combined

Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/welcometohmp.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/welcometohmp.com/privkey.pem
</VirtualHost>
</IfModule>
<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName welcometohmp.com
    ServerAlias www.welcometohmp.com
    DocumentRoot /var/www/html/
    <Directory /var/www/wthmp.com>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>
    ErrorLog /var/log/httpd/wthmp.com.info-error.log
    CustomLog /var/log/httpd/wthmp.com.info-access.log combined

Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/welcometohmp.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/welcometohmp.com/privkey.pem
</VirtualHost>
</IfModule>
<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName welcometohmp.uk
    ServerAlias www.welcometohmp.uk
    DocumentRoot /var/www/wthmp.uk/
    <Directory /var/www/wthmp.uk>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>
    ErrorLog /var/log/httpd/wthmp.uk.info-error.log
    CustomLog /var/log/httpd/wthmp.uk.info-access.log combined

Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/welcometohmp.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/welcometohmp.com/privkey.pem
</VirtualHost>
</IfModule>
[admin@NickTee conf]$ ls
httpd-le-ssl.conf  httpd.conf  httpd.conf.orig  magic
[admin@NickTee conf]$ cat *ssl.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName welcometohmp.co.uk
    ServerAlias www.welcometohmp.co.uk
    DocumentRoot /var/www/wthmp.co.uk/
    <Directory /var/www/wthmp.co.uk>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>
    ErrorLog /var/log/httpd/wthmp.co.uk.info-error.log
    CustomLog /var/log/httpd/wthmp.co.uk.info-access.log combined

Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/welcometohmp.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/welcometohmp.com/privkey.pem
</VirtualHost>
</IfModule>
<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName welcometohmp.com.au
    ServerAlias www.welcometohmp.com.au
    DocumentRoot /var/www/wthmp.au/
    <Directory /var/www/wthmp.au>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>
    ErrorLog /var/log/httpd/wthmp.au.info-error.log
    CustomLog /var/log/httpd/wthmp.au.info-access.log combined

Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/welcometohmp.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/welcometohmp.com/privkey.pem
</VirtualHost>
</IfModule>
<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName welcometohmp.com
    ServerAlias www.welcometohmp.com
    DocumentRoot /var/www/html/
    <Directory /var/www/wthmp.com>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>
    ErrorLog /var/log/httpd/wthmp.com.info-error.log
    CustomLog /var/log/httpd/wthmp.com.info-access.log combined

Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/welcometohmp.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/welcometohmp.com/privkey.pem
</VirtualHost>
</IfModule>
<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName welcometohmp.uk
    ServerAlias www.welcometohmp.uk
    DocumentRoot /var/www/wthmp.uk/
    <Directory /var/www/wthmp.uk>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>
    ErrorLog /var/log/httpd/wthmp.uk.info-error.log
    CustomLog /var/log/httpd/wthmp.uk.info-access.log combined

Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/welcometohmp.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/welcometohmp.com/privkey.pem
</VirtualHost>
</IfModule>
[admin@NickTee conf]$ cd ..
[admin@NickTee httpd]$ ls
conf  conf.d  conf.modules.d  logs  modules  run  state
[admin@NickTee httpd]$ cd conf.d
[admin@NickTee conf.d]$ ls
README          php.conf         phpmyadmin.conf  ssl.conf.orig  welcome.conf
autoindex.conf  phpMyAdmin.conf  ssl.conf         userdir.conf
[admin@NickTee conf.d]$ cat ssl.conf
#
# When we also provide SSL we have to listen to the
# standard HTTPS port in addition.
#
Listen 443 https

##
##  SSL Global Context
##
##  All SSL configuration in this context applies both to
##  the main server and all SSL-enabled virtual hosts.
##

#   Pass Phrase Dialog:
#   Configure the pass phrase gathering process.
#   The filtering dialog program (`builtin' is a internal
#   terminal dialog) has to provide the pass phrase on stdout.
SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog

#   Inter-Process Session Cache:
#   Configure the SSL Session Cache: First the mechanism
#   to use and second the expiring timeout (in seconds).
SSLSessionCache         shmcb:/run/httpd/sslcache(512000)
SSLSessionCacheTimeout  300

#
# Use "SSLCryptoDevice" to enable any supported hardware
# accelerators. Use "openssl engine -v" to list supported
# engine names.  NOTE: If you enable an accelerator and the
# server does not start, consult the error logs and ensure
# your accelerator is functioning properly.
#
SSLCryptoDevice builtin
#SSLCryptoDevice ubsec

##
## SSL Virtual Host Context
##

<VirtualHost _default_:443>

# General setup for the virtual host, inherited from global configuration
#DocumentRoot "/var/www/html"
#ServerName www.welcometohmp.com:443

# Use separate log files for the SSL virtual host; note that LogLevel
# is not inherited from httpd.conf.
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn

#   SSL Engine Switch:
#   Enable/Disable SSL for this virtual host.
SSLEngine on

#   List the protocol versions which clients are allowed to connect with.
#   The OpenSSL system profile is used by default.  See
#   update-crypto-policies(8) for more details.
#SSLProtocol all -SSLv3
#SSLProxyProtocol all -SSLv3

#   User agents such as web browsers are not configured for the user's
#   own preference of either security or performance, therefore this
#   must be the prerogative of the web server administrator who manages
#   cpu load versus confidentiality, so enforce the server's cipher order.
SSLHonorCipherOrder on

#   SSL Cipher Suite:
#   List the ciphers that the client is permitted to negotiate.
#   See the mod_ssl documentation for a complete list.
#   The OpenSSL system profile is configured by default.  See
#   update-crypto-policies(8) for more details.
SSLCipherSuite PROFILE=SYSTEM
SSLProxyCipherSuite PROFILE=SYSTEM

#   Point SSLCertificateFile at a PEM encoded certificate.  If
#   the certificate is encrypted, then you will be prompted for a
#   pass phrase.  Note that restarting httpd will prompt again.  Keep
#   in mind that if you have both an RSA and a DSA certificate you
#   can configure both in parallel (to also allow the use of DSA
#   ciphers, etc.)
#   Some ECC cipher suites (http://www.ietf.org/rfc/rfc4492.txt)
#   require an ECC certificate which can also be configured in
#   parallel.
SSLCertificateFile /etc/pki/tls/certs/localhost.crt

#   Server Private Key:
#   If the key is not combined with the certificate, use this
#   directive to point at the key file.  Keep in mind that if
#   you've both a RSA and a DSA private key you can configure
#   both in parallel (to also allow the use of DSA ciphers, etc.)
#   ECC keys, when in use, can also be configured in parallel
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

#   Server Certificate Chain:
#   Point SSLCertificateChainFile at a file containing the
#   concatenation of PEM encoded CA certificates which form the
#   certificate chain for the server certificate. Alternatively
#   the referenced file can be the same as SSLCertificateFile
#   when the CA certificates are directly appended to the server
#   certificate for convenience.
#SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt

#   Certificate Authority (CA):
#   Set the CA certificate verification path where to find CA
#   certificates for client authentication or alternatively one
#   huge file containing all of them (file must be PEM encoded)
#SSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt

#   Client Authentication (Type):
#   Client certificate verification type and depth.  Types are
#   none, optional, require and optional_no_ca.  Depth is a
#   number which specifies how deeply to verify the certificate
#   issuer chain before deciding the certificate is not valid.
#SSLVerifyClient require
#SSLVerifyDepth  10

#   Access Control:
#   With SSLRequire you can do per-directory access control based
#   on arbitrary complex boolean expressions containing server
#   variable checks and other lookup directives.  The syntax is a
#   mixture between C and Perl.  See the mod_ssl documentation
#   for more details.
#<Location />
#SSLRequire (    %{SSL_CIPHER} !~ m/^(EXP|NULL)/ \
#            and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd." \
#            and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"} \
#            and %{TIME_WDAY} >= 1 and %{TIME_WDAY} <= 5 \
#            and %{TIME_HOUR} >= 8 and %{TIME_HOUR} <= 20       ) \
#           or %{REMOTE_ADDR} =~ m/^192\.76\.162\.[0-9]+$/
#</Location>

#   SSL Engine Options:
#   Set various options for the SSL engine.
#   o FakeBasicAuth:
#     Translate the client X.509 into a Basic Authorisation.  This means that
#     the standard Auth/DBMAuth methods can be used for access control.  The
#     user name is the `one line' version of the client's X.509 certificate.
#     Note that no password is obtained from the user. Every entry in the user
#     file needs this password: `xxj31ZMTZzkVA'.
#   o ExportCertData:
#     This exports two additional environment variables: SSL_CLIENT_CERT and
#     SSL_SERVER_CERT. These contain the PEM-encoded certificates of the
#     server (always existing) and the client (only existing when client
#     authentication is used). This can be used to import the certificates
#     into CGI scripts.
#   o StdEnvVars:
#     This exports the standard SSL/TLS related `SSL_*' environment variables.
#     Per default this exportation is switched off for performance reasons,
#     because the extraction step is an expensive operation and is usually
#     useless for serving static content. So one usually enables the
#     exportation for CGI and SSI requests only.
#   o StrictRequire:
#     This denies access when "SSLRequireSSL" or "SSLRequire" applied even
#     under a "Satisfy any" situation, i.e. when it applies access is denied
#     and no other module can change it.
#   o OptRenegotiate:
#     This enables optimized SSL connection renegotiation handling when SSL
#     directives are used in per-directory context.
#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/var/www/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

#   SSL Protocol Adjustments:
#   The safe and default but still SSL/TLS standard compliant shutdown
#   approach is that mod_ssl sends the close notify alert but doesn't wait for
#   the close notify alert from client. When you need a different shutdown
#   approach you can use one of the following variables:
#   o ssl-unclean-shutdown:
#     This forces an unclean shutdown when the connection is closed, i.e. no
#     SSL close notify alert is sent or allowed to be received.  This violates
#     the SSL/TLS standard but is needed for some brain-dead browsers. Use
#     this when you receive I/O errors because of the standard approach where
#     mod_ssl sends the close notify alert.
#   o ssl-accurate-shutdown:
#     This forces an accurate shutdown when the connection is closed, i.e. a
#     SSL close notify alert is sent and mod_ssl waits for the close notify
#     alert of the client. This is 100% SSL/TLS standard compliant, but in
#     practice often causes hanging connections with brain-dead browsers. Use
#     this only for browsers where you know that their SSL implementation
#     works correctly.
#   Notice: Most problems of broken clients are also related to the HTTP
#   keep-alive facility, so you usually additionally want to disable
#   keep-alive for those clients, too. Use variable "nokeepalive" for this.
#   Similarly, one has to force some clients to use HTTP/1.0 to workaround
#   their broken HTTP/1.1 implementation. Use variables "downgrade-1.0" and
#   "force-response-1.0" for this.
BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

#   Per-Server Logging:
#   The home of a custom SSL log file. Use this when you want a
#   compact non-error SSL logfile on a virtual host basis.
CustomLog logs/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

</VirtualHost>

thank you

Your httpd-le-ssl.conf looks good.

The ssl.conf needs to change. Although, you may have changed it already?

In any event, I suggest finding these lines

<VirtualHost _default_:443>
# General setup for the virtual host, inherited from global configuration
#DocumentRoot "/var/www/html"
#ServerName www.welcometohmp.com:443

And replace the last line with (not commented out)

ServerName default.server

Then, after restarting Apache show result of this again

sudo httpd -t -D DUMP_VHOSTS

You should have a nice clean grouping of your names. The default for port 443 should show this default.server name instead of one of your actual domain names.

Apache is quirky. There are several ways to do the same thing and sometimes subtle differences matter.

3 Likes
 sudo httpd -t -D DUMP_VHOSTS
VirtualHost configuration:
*:80                   is a NameVirtualHost
         default server welcometohmp.com (/etc/httpd/conf/httpd.conf:85)
         port 80 namevhost welcometohmp.com (/etc/httpd/conf/httpd.conf:85)
                 alias www.welcometohmp.com
         port 80 namevhost welcometohmp.co.uk (/etc/httpd/conf/httpd.conf:100)
                 alias www.welcometohmp.co.uk
         port 80 namevhost welcometohmp.uk (/etc/httpd/conf/httpd.conf:115)
                 alias www.welcometohmp.uk
         port 80 namevhost welcometohmp.com.au (/etc/httpd/conf/httpd.conf:130)
                 alias www.welcometohmp.com.au
*:443                  is a NameVirtualHost
         default server default.server (/etc/httpd/conf.d/ssl.conf:40)
         port 443 namevhost default.server (/etc/httpd/conf.d/ssl.conf:40)
         port 443 namevhost welcometohmp.co.uk (/etc/httpd/conf/httpd-le-ssl.conf:2)
                 alias www.welcometohmp.co.uk
         port 443 namevhost welcometohmp.com.au (/etc/httpd/conf/httpd-le-ssl.conf:19)
                 alias www.welcometohmp.com.au
         port 443 namevhost welcometohmp.com (/etc/httpd/conf/httpd-le-ssl.conf:36)
                 alias www.welcometohmp.com
         port 443 namevhost welcometohmp.uk (/etc/httpd/conf/httpd-le-ssl.conf:53)
                 alias www.welcometohmp.uk

thanks for the help. seems to have fixed it, legend. great help in this place!!!

4 Likes

Looks good to me too. Thanks for the compliment

3 Likes

thanks for the help guys, one last question how do i get it to renew automatically for all domains in 3 months?

1 Like

Very likely nothing.
[it should renew all by itself]

2 Likes

Should renew every 60 days (by default).

3 Likes

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.