Deleting self-signed certificate to use a real certificate

I've searched through help around here as much as I can, and still can't seem to be able to do the right things.

I'm trying to get my main domain using https (domain: keyorg.systems). It's apparently unable to find the right certificate, and instead uses a self-signed certificate (that I apparently just renewed using openssl). Apparently everytime I revoke, delete, and create a new certificate for my site it points to the self-signed cert instead of the cert that all of the other sites use.

All of my other domains on the server work with https, but the main one doesn't.

I'm running a centos7 + Apache2.4.6 + certbot 1.4.0

I seem to have three certbot accounts (ls -lah /etc/letsencrypt/accounts:
staging-v02 (which I think is the self-signed)
acme-v1
acme v2

I have a few domains (there are more but i don't want to bore you)
blah.blah
other.other

when I run httpd -S I see:
default server blah.blah (/etc/httpd/conf.d/ssl.conf:56)
port 443 namevhost blah.blah (/etc/httpd/sites-available/blah.blah-le-ssl.conf:2)

any help appreciated

tl;dr

  1. I don't know what to delete to get rid of a self-signed certificate so I can get the nice cool lock that my other sites have
  2. I can't seem to make the default server point to the right conf file (do I put 'vhost: 443' it in the first vhost, or put the block in ssl.conf

Please share your entire httpd -S output (I think you can remove the "blah.bla" and "other.other" domains if you'd like) and also the entire command you've used to get the certificate.

Also note that issuing -> deleting -> issuing -> deleting -> issuing certificates is NOT the correct way to fix installation issues: if you got the certificate issued, you have reached the installation part of the whole process: issuing and installation are SEPARATE entities, so issuing new certs over and over will NOT help installing it. It will only add more and more load upon the Let's Encrypt systems and will risk you running into rate limits. Please refrain from issuing multiple certificates if it's an installation problem.

2 Likes

Thanks Osiris, Lord of the Perfect Black ...

this may make things easier: https://www.ssllabs.com/ssltest/analyze.html?d=www.keyorg.systems

the command I used to get the certs is simply "certbot" and then chose the # of the domain I wanted.

I will refrain from re-issuing certs. I get the difference intellectually, but don't know what commands to use to install the issued certs (esp as i didn't manually install the other certs)

here's the output:

*:80 is a NameVirtualHost
default server www.000-default.keyorg.systems (/etc/httpd/conf.d/000-default.conf:1)
port 80 namevhost www.000-default.keyorg.systems (/etc/httpd/conf.d/000-default.conf:1)

*:443 is a NameVirtualHost
default server keyorg.systems (/etc/httpd/conf.d/ssl.conf:56)
port 443 namevhost keyorg.systems (/etc/httpd/conf.d/ssl.conf:56)
...
port 443 namevhost subdomain.blah.blah (/etc/httpd/sites-available/subdomain.blah.blah-le-ssl.conf:2)
port 443 namevhost keyorg.systems (/etc/httpd/sites-available/keyorg.systems-le-ssl.conf:2)

ServerRoot: "/etc/httpd"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/etc/httpd/logs/error_log"
Mutex rewrite-map: using_defaults
Mutex authdigest-client: using_defaults
Mutex ssl-stapling: using_defaults
Mutex proxy: using_defaults
Mutex authn-socache: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/run/httpd/" mechanism=default
Mutex mpm-accept: using_defaults
Mutex authdigest-opaque: using_defaults
Mutex proxy-balancer-shm: using_defaults
PidFile: "/run/httpd/httpd.pid"
Define: _RH_HAS_HTTPPROTOCOLOPTIONS
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="apache" id=48
Group: name="apache" id=48

it may help that I think i changed my FQDN or hostname between the issuance of the first cert for blah.blah and now. I think the previous was look for centos-ny1-digita-locean or whatever they called it vs the subdomain.domain.tld that it uses now.

Thanks in advance for your assistance. and let me know if I've missed including anything you need

Your hostname keyorg.systems has two namevhosts in two different configuration files. The latter (with the le-ssl.conf ending) was generated by certbot, but I think your Apache is using the former namevhost from ssl.conf. It probably has the self signed certificate from that configuration file. I recommend to combine the keyorg.systems HTTPS virtualhost (namevhost) from ssl.conf and the keyorg.systems HTTPS virtualhost from keyorg.systems-le-ssl.conf into a single file, preferably a separate file like keyorg.systems-le-ssl.conf.

I'm guessing keyorg.systems-le-ssl.conf already has the correct certificates configured, so unless the virtualhost in ssl.conf has options which are not in keyorg.systems-le-ssl.conf, it should suffice to disable the keyorg.systems HTTPS virtualhost in ssl.conf. If there are important options in that ssl.conf virtualhost, you can migrate them to keyorg.systems-le-ssl.conf.

Afterwards, I would suggest to run certbot again and when it asks you to Re-issue or to attempt to install it again, select the "attempt to install it again" option and see what happens.

Also, if it doesn't work, please output the certbot output too.

1 Like

Thanks again.

Here's the rub. There's no config information in /etc/httpd/conf.d/ssl.conf that points to keyorg.systems. the command:
grep -ir keyo ssl.conf
comes up empty!

line 56 of ssl.conf reads ""

running 'grep -ir 443 ssl.conf' gives:
Listen 443 https

#ServerName www.example.com:443

and as for changing what ssl.conf aims at, an earlier stage in my troubleshooting I pointed the SSLCertificate___ to the certs relating to keyorg.systems instead of the default /etc/pki/tls/___etc - that's all in a backup file.

I think you're spot on that the server is using the default server (first). I don't know how to disable it and make it use the second vhost without disabling ssl.conf (which borks the server).

I tried to specify keyorg.systems on line 56 (Vhost) and 60 (ServerName) to no avail.

anyhoo...
here's the output of re-running certbot:

Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 12
Cert not yet due for renewal
You have an existing certificate that has exactly the same domains or certificate name you requested and isn't close to expiry.
(ref: /etc/letsencrypt/renewal/keyorg.systems.conf)
What would you like to do?


1: Attempt to reinstall this existing certificate
2: Renew & replace the cert (limit ~5 per 7 days)


Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1
Keeping the existing certificate
Deploying Certificate to VirtualHost /etc/httpd/sites-available/keyorg.systems-le-ssl.conf
Redirecting vhost in /etc/httpd/conf.d/keyorg.systems.conf to ssl vhost in /etc/httpd/sites-available/keyorg.systems-le-ssl.conf


Congratulations! You have successfully enabled https://keyorg.systems
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=keyorg.systems


IMPORTANT NOTES:

  • Congratulations! Your certificate and chain have been saved at:
    /etc/letsencrypt/live/keyorg.systems/fullchain.pem
    Your key file has been saved at:
    /etc/letsencrypt/live/keyorg.systems/privkey.pem
    Your cert will expire on 2021-03-05. To obtain a new or tweaked
    version of this certificate in the future, simply run certbot again
    with the "certonly" option. To non-interactively renew all of
    your certificates, run "certbot renew"
  • If you like Certbot, please consider supporting our work by:
    Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
    Donating to EFF: https://eff.org/donate-le
    end__

Could you give the contents of ssl.conf? It's rather strange that it would be used as that namevhost while there already is another configuration file for it.. Perhaps we're missing something in the files contents.

Please put three backticks (```) above and below the contents so it will get formatted properly.

'''

[root@host conf.d]# cat ssl.conf

When we also provide SSL we have to listen to the

the HTTPS port in addition.

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.

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)

Pseudo Random Number Generator (PRNG):

Configure one or more sources to seed the PRNG of the

SSL library. The seed data should be of good random quality.

WARNING! On some platforms /dev/random blocks if not enough entropy

is available. This means you then cannot use the /dev/random device

because it would lead to very long connection times (as long as

it requires to make more entropy available). But usually those

platforms additionally provide a /dev/urandom device which doesn't

block. So, if available, use this one instead. Read the mod_ssl User

Manual for more details.

SSLRandomSeed startup file:/dev/urandom 256
SSLRandomSeed connect builtin
#SSLRandomSeed startup file:/dev/random 512
#SSLRandomSeed connect file:/dev/random 512

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

SSL Virtual Host Context

General setup for the virtual host, inherited from global configuration

DocumentRoot "/var/www/keysto8/keysto8/development/web"

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

SSL Protocol support:

List the enable protocol levels with which clients will be able to

connect. Disable SSLv2 access by default:

SSLProtocol all -SSLv2 -SSLv3

SSL Cipher Suite:

List the ciphers that the client is permitted to negotiate.

See the mod_ssl documentation for a complete list.

SSLCipherSuite HIGH:3DES:!aNULL:!MD5:!SEED:!IDEA

Speed-optimized SSL Cipher configuration:

If speed is your main concern (on busy HTTPS servers e.g.),

you might want to force clients to specific, performance

optimized ciphers. In this case, prepend those ciphers

to the SSLCipherSuite list, and enable SSLHonorCipherOrder.

Caveat: by giving precedence to RC4-SHA and AES128-SHA

(as in the example below), most connections will no longer

have perfect forward secrecy - if the server's key is

compromised, captures of past or future traffic must be

considered compromised, too.

#SSLCipherSuite RC4-SHA:AES128-SHA:HIGH:MEDIUM:!aNULL:!MD5
#SSLHonorCipherOrder on

Server Certificate:

Point SSLCertificateFile at a PEM encoded certificate. If

the certificate is encrypted, then you will be prompted for a

pass phrase. Note that a kill -HUP will prompt again. A new

certificate can be generated using the genkey(1) command.

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.)

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 convinience.

#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.

#
#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]+$/

#

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
<Files ~ ".(cgi|shtml|phtml|php3?)$">
SSLOptions +StdEnvVars

<Directory "/var/www/cgi-bin">
SSLOptions +StdEnvVars

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 send or allowed to 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 send 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"

'''

Note: the backticks are a different symbol than single quotes. The backticks are just left of the "1" on your keyboard if you have the US layout. You can also copy/paste the backticks from my post :wink:

I'm not seeing any ServerName in there, so I assume Apache is guessing the hostname by other means, such as "Asking the OS" as stated in the Apache ServerName documentation.

I recommend forcing the default <VirtualHost> in ssl.conf to a different hostname altogether. In my Apaches default ssl configuration (Gentoo) it seems it has ServerName localhost. That would force Apache to use your ...le-ssl.conf for the appropriate namevhost and would solve your issue.

Sorry about the backticks ...

I did find when I changed SErverName to keyorg.systems the default servername changed to a different server ... and then that ssl https://otherdomain.com failed. I think what I need to do is create a subdomain as default server, force it to use that and let that fail all it wants to liberate my main domain. it's a hack, but it may just get me out of this hole.

anyhow, here's the stuff with the right backticks:

cat ssl.conf
#
# When we also provide SSL we have to listen to the
# the 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
#   Pseudo Random Number Generator (PRNG):
#   Configure one or more sources to seed the PRNG of the
#   SSL library. The seed data should be of good random quality.
#   WARNING! On some platforms /dev/random blocks if not enough entropy
#   is available. This means you then cannot use the /dev/random device
#   because it would lead to very long connection times (as long as
#   it requires to make more entropy available). But usually those
#   platforms additionally provide a /dev/urandom device which doesn't
#   block. So, if available, use this one instead. Read the mod_ssl User
#   Manual for more details.
SSLRandomSeed startup file:/dev/urandom  256
SSLRandomSeed connect builtin
#SSLRandomSeed startup file:/dev/random  512
#SSLRandomSeed connect file:/dev/random  512
#SSLRandomSeed connect file:/dev/urandom 512
#
# 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.example.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
#   SSL Protocol support:
# List the enable protocol levels with which clients will be able to
# connect.  Disable SSLv2 access by default:
SSLProtocol all -SSLv2 -SSLv3
#   SSL Cipher Suite:
#   List the ciphers that the client is permitted to negotiate.
#   See the mod_ssl documentation for a complete list.
SSLCipherSuite HIGH:3DES:!aNULL:!MD5:!SEED:!IDEA
#   Speed-optimized SSL Cipher configuration:
#   If speed is your main concern (on busy HTTPS servers e.g.),
#   you might want to force clients to specific, performance
#   optimized ciphers. In this case, prepend those ciphers
#   to the SSLCipherSuite list, and enable SSLHonorCipherOrder.
#   Caveat: by giving precedence to RC4-SHA and AES128-SHA
#   (as in the example below), most connections will no longer
#   have perfect forward secrecy - if the server's key is
#   compromised, captures of past or future traffic must be
#   considered compromised, too.
#SSLCipherSuite RC4-SHA:AES128-SHA:HIGH:MEDIUM:!aNULL:!MD5
#SSLHonorCipherOrder on
#   Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate.  If
# the certificate is encrypted, then you will be prompted for a
# pass phrase.  Note that a kill -HUP will prompt again.  A new
# certificate can be generated using the genkey(1) command.
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.)
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 convinience.
#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
<Files ~ "\.(cgi|shtml|phtml|php3?)$">
    SSLOptions +StdEnvVars
</Files>
<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 send or allowed to 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 send 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>

so it's fixed. while switching between subdomains and whatnot, I noticed that it's reading from the first item in /etc/httpd/conf/http.conf

All I had to do (hours of drudging and months of frustration mind you -and thanks for your help) was to move the default domain keyorg.systems to the top of the list.

wow.

I really appreciate all the help, time, care, and attention you've spent/donated with me.

1 Like

Great you've got things working! Just curious, how's httpd -S looking right now?

1 Like

looking purty:

*:443                  is a NameVirtualHost
         default server keyorg.systems (/etc/httpd/sites-available/keyorg.systems-le-ssl.conf:2)
         port 443 namevhost keyorg.systems (/etc/httpd/sites-available/keyorg.systems-le-ssl.conf:2)
                 alias www.keyorg.systems```
2 Likes

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