==== Satisfy Chromium/Chrome 58+ strict requirements for self-signed HTTPS/SSL cert ====
**Create CA key and cert**
# openssl genrsa -out server_rootCA.key 2048
# openssl req -x509 -new -nodes -key server_rootCA.key -sha256 -days 3650 -out server_rootCA.pem
**Create ''server_rootCA.csr.cnf''**
# server_rootCA.csr.cnf
[req]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn
[dn]
C=DE
ST=Berlin
L=NeuKoelln
O=Weisestrasse
OU=local_RootCA
emailAddress=ikke@server.berlin
CN = server.berlin
**Create ''v3.ext'' configuration file**
# v3.ext
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = server.berlin
**Create server key**
# openssl req -new -sha256 -nodes -out server.csr -newkey rsa:2048 -keyout server.key -config <( cat server_rootCA.csr.cnf )
**Create server cert**
# openssl x509 -req -in server.csr -CA server_rootCA.pem -CAkey server_rootCA.key -CAcreateserial -out server.crt -days 3650 -sha256 -extfile v3.ext
**Add cert and key to Apache2 site-file, __HTTPS (port 443)__ section**
SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key
**Copy ''server_rootCA.pem'' from the server to your machine..**
# scp you@server.berlin:~/server_rootCA.pem .
==== Add cert to the browser ====
Chromium -> Setting -> (Advanced) Manage Certificates -> Import -> 'server_rootCA.pem'
\\
**YOU ARE ALL DONE!** \\
\\
{{:public:screenshot_at_2017-08-10_03-03-03.png?direct|}}
----
\\
**P.S.** Instead of creating a functional CA & server cert pair (per the instructions above) you could simply disable HSTS headers in your HTTP server config. \\
This will prevent Chromium from enforcing HTTPS and will allow users to click "Advanced -> proceed to __your.url__ (unsafe)" without having to obtain and install your custom CA (server_rootCA.pem) certificate. In other words -- having to disable HSTS will allow your site to be publicly viewed over HTTP and/or insecure HTTPS connection (beware!).
**For Apache2 add the following to site-file, __HTTP (port 80)__ section**
Header unset Strict-Transport-Security
Header always set Strict-Transport-Security "max-age=0;includeSubDomains"