Security/Certificate: Difference between revisions

From Chorke Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 25: Line 25:


[ dn ]
[ dn ]
C                  = MY
C                  = BD
ST                = WP Kuala Lumpur
ST                = Dhaka
L                  = Kuala Lumpur
L                  = Munshiganj
O                  = Chorke, Inc.
O                  = Shahed, Inc.
OU                = Chorke
OU                = Shahed
CN                = chorke.org
CN                = shahed.biz
emailAddress      = info@chorke.org
emailAddress      = info@shahed.biz
CNF
CNF


Line 41: Line 41:
----
----
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
openssl genpkey  -algorithm RSA  -out rootCA.key -aes256 -pass file:<(echo "${ROOTCA_PASS_PHRASE}")
openssl genpkey  -algorithm RSA  -out Shahed_RSA_Root_CA_2025.key -aes256 -pass file:<(echo "${ROOTCA_PASS_PHRASE}")
openssl req -x509 -new -nodes    -key rootCA.key -sha256 -days 1024 -out rootCA.pem -config ${ROOTCA_CNF} -passin file:<(echo "${ROOTCA_PASS_PHRASE}")
openssl req -x509 -new -nodes    -key Shahed_RSA_Root_CA_2025.key -sha256 -days 7305 -out Shahed_RSA_Root_CA_2025.pem -config ${ROOTCA_CNF} -passin file:<(echo "${ROOTCA_PASS_PHRASE}")
</syntaxhighlight>
</syntaxhighlight>


Line 48: Line 48:
----
----
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
openssl genpkey  -algorithm EC  -out rootCA.key -pkeyopt ec_paramgen_curve:P-256 -pass file:<(echo "${ROOTCA_PASS_PHRASE}")
openssl genpkey  -algorithm EC  -out Shahed_ECC_Root_CA_2025.key -pkeyopt ec_paramgen_curve:P-256 -pass file:<(echo "${ROOTCA_PASS_PHRASE}")
openssl req -x509 -new -nodes    -key rootCA.key -sha256 -days 1024 -out rootCA.pem -config ${ROOTCA_CNF} -passin file:<(echo "${ROOTCA_PASS_PHRASE}")
openssl req -x509 -new -nodes    -key Shahed_ECC_Root_CA_2025.key -sha256 -days 7305 -out Shahed_ECC_Root_CA_2025.pem -config ${ROOTCA_CNF} -passin file:<(echo "${ROOTCA_PASS_PHRASE}")
</syntaxhighlight>
</syntaxhighlight>


Line 55: Line 55:
----
----
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
openssl genpkey  -algorithm EC  -out rootCA.key -pkeyopt ec_paramgen_curve:P-384 -pass file:<(echo "${ROOTCA_PASS_PHRASE}")
openssl genpkey  -algorithm EC  -out Shahed_ECC_P384_Root_CA_2025.key -pkeyopt ec_paramgen_curve:P-384 -pass file:<(echo "${ROOTCA_PASS_PHRASE}")
openssl req -x509 -new -nodes    -key rootCA.key -sha384 -days 1024 -out rootCA.pem -config ${ROOTCA_CNF} -passin file:<(echo "${ROOTCA_PASS_PHRASE}")
openssl req -x509 -new -nodes    -key Shahed_ECC_P384_Root_CA_2025.key -sha384 -days 7305 -out Shahed_ECC_P384_Root_CA_2025.pem -config ${ROOTCA_CNF} -passin file:<(echo "${ROOTCA_PASS_PHRASE}")
</syntaxhighlight>
</syntaxhighlight>


Line 69: Line 69:


[ dn ]
[ dn ]
C                  = MY
C                  = BD
ST                = WP Kuala Lumpur
ST                = Dhaka
L                  = Kuala Lumpur
L                  = Munshiganj
O                  = Chorke, Inc.
O                  = Shahed, Inc.
OU                = Academia
OU                = Academia
CN                = chorke.org
CN                = shahed.biz
emailAddress      = info@chorke.org
emailAddress      = info@shahed.biz


[ req_attrs ]
[ req_attrs ]
challengePassword  = changeit
challengePassword  = changeit
unstructuredName  = Chorke Academia, Inc.
unstructuredName  = Shahed Academia, Inc.
CNF
CNF


Line 97: Line 97:
----
----
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
openssl genpkey  -algorithm RSA  -out  subCA.key -aes256 -pass file:<(echo  "${SUBCA_PASS_PHRASE}")
openssl genpkey  -algorithm RSA  -out  Shahed_RSA_Sub_CA_2025.key -aes256 -pass file:<(echo  "${SUBCA_PASS_PHRASE}")
openssl req -new  -key subCA.key  -out  subCA.csr -config ${SUBCA_CNF}  -passin file:<(echo "$SUBCA_PASS_PHRASE")
openssl req -new  -key Shahed_RSA_Sub_CA_2025.key  -out  Shahed_RSA_Sub_CA_2025.csr -config ${SUBCA_CNF}  -passin file:<(echo "$SUBCA_PASS_PHRASE")
openssl x509 -req -in  subCA.csr  -CA  rootCA.pem -CAkey  rootCA.key    -CAcreateserial -out  subCA.pem -days 1024 -sha256 -passin file:<(echo "${ROOTCA_PASS_PHRASE}")
openssl x509 -req -in  Shahed_RSA_Sub_CA_2025.csr  -CA  Shahed_RSA_Root_CA_2025.pem -CAkey  Shahed_RSA_Root_CA_2025.key    -CAcreateserial -out  Shahed_RSA_Sub_CA_2025.pem -days 2922 -sha256 -passin file:<(echo "${ROOTCA_PASS_PHRASE}")
</syntaxhighlight>
</syntaxhighlight>


Line 105: Line 105:
----
----
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
openssl genpkey  -algorithm EC  -out  subCA.key -pkeyopt ec_paramgen_curve:P-256 -pass file:<(echo  "${SUBCA_PASS_PHRASE}")
openssl genpkey  -algorithm EC  -out  Shahed_ECC_Sub_CA_2025.key -pkeyopt ec_paramgen_curve:P-256 -pass file:<(echo  "${SUBCA_PASS_PHRASE}")
openssl req -new  -key subCA.key  -out  subCA.csr -config ${SUBCA_CNF}  -passin file:<(echo "$SUBCA_PASS_PHRASE")
openssl req -new  -key Shahed_ECC_Sub_CA_2025.key  -out  Shahed_ECC_Sub_CA_2025.csr -config ${SUBCA_CNF}  -passin file:<(echo "$SUBCA_PASS_PHRASE")
openssl x509 -req -in  subCA.csr  -CA  rootCA.pem -CAkey  rootCA.key    -CAcreateserial -out  subCA.pem -days 1024 -sha256 -extfile ${SUBCA_EXT} -passin file:<(echo "${ROOTCA_PASS_PHRASE}")
openssl x509 -req -in  Shahed_ECC_Sub_CA_2025.csr  -CA  Shahed_ECC_Root_CA_2025.pem -CAkey  Shahed_ECC_Root_CA_2025.key    -CAcreateserial -out  Shahed_ECC_Sub_CA_2025.pem -days 2922 -sha256 -extfile ${SUBCA_EXT} -passin file:<(echo "${ROOTCA_PASS_PHRASE}")
</syntaxhighlight>
</syntaxhighlight>


Line 113: Line 113:
----
----
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
openssl genpkey  -algorithm EC  -out  subCA.key -pkeyopt ec_paramgen_curve:P-384 -pass file:<(echo  "${SUBCA_PASS_PHRASE}")
openssl genpkey  -algorithm EC  -out  Shahed_ECC_P384_Sub_CA_2025.key -pkeyopt ec_paramgen_curve:P-384 -pass file:<(echo  "${SUBCA_PASS_PHRASE}")
openssl req -new  -key subCA.key  -out  subCA.csr -config ${SUBCA_CNF}  -passin file:<(echo "$SUBCA_PASS_PHRASE")
openssl req -new  -key Shahed_ECC_P384_Sub_CA_2025.key  -out  Shahed_ECC_P384_Sub_CA_2025.csr -config ${SUBCA_CNF}  -passin file:<(echo "$SUBCA_PASS_PHRASE")
openssl x509 -req -in  subCA.csr  -CA  rootCA.pem -CAkey  rootCA.key    -CAcreateserial -out  subCA.pem -days 1024 -sha384 -extfile ${SUBCA_EXT} -passin file:<(echo "${ROOTCA_PASS_PHRASE}")
openssl x509 -req -in  Shahed_ECC_P384_Sub_CA_2025.csr  -CA  Shahed_ECC_P384_Root_CA_2025.pem -CAkey  Shahed_ECC_P384_Root_CA_2025.key    -CAcreateserial -out  Shahed_ECC_P384_Sub_CA_2025.pem -days 2922 -sha384 -extfile ${SUBCA_EXT} -passin file:<(echo "${ROOTCA_PASS_PHRASE}")
</syntaxhighlight>
</syntaxhighlight>


Line 129: Line 129:


[ dn ]
[ dn ]
C                  = MY
C                  = BD
ST                = WP Kuala Lumpur
ST                = Dhaka
L                  = Kuala Lumpur
L                  = Munshiganj
O                  = Chorke, Inc.
O                  = Shahed, Inc.
OU                = Academia
OU                = Academia
CN                = chorke.org
CN                = shahed.biz
emailAddress      = info@chorke.org
emailAddress      = info@shahed.biz


[ req_ext ]
[ req_ext ]
Line 142: Line 142:
[ req_attrs ]
[ req_attrs ]
challengePassword  = changeit
challengePassword  = changeit
unstructuredName  = Chorke Academia, Inc.
unstructuredName  = Shahed Academia, Inc.


[ alt_names ]
[ alt_names ]
DNS.1              = chorke.org
DNS.1              = aa.shahed.shahed.biz
DNS.2              = www.chorke.org
IP.1              = 10.20.30.1
IP.1              = 10.19.83.10
IP.2              = 10.20.40.1
IP.2              = 10.19.83.100
CNF
CNF


Line 158: Line 157:
----
----
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
openssl genpkey  -algorithm  RSA -out server.key
openssl genpkey  -algorithm  RSA -out aa.shahed.shahed.biz.key
openssl req -new  -key  server.key -out server.csr -config ${SERVER_CNF}
openssl req -new  -key  aa.shahed.shahed.biz.key -out aa.shahed.shahed.biz.csr -config ${SERVER_CNF}
openssl x509 -req -in  server.csr -CA  subCA.pem  -CAkey  subCA.key    -CAcreateserial -out server.crt -days 1024 -sha256 -passin file:<(echo  "${SUBCA_PASS_PHRASE}")
openssl x509 -req -in  aa.shahed.shahed.biz.csr -CA  Shahed_RSA_Sub_CA_2025.pem  -CAkey  Shahed_RSA_Sub_CA_2025.key    -CAcreateserial -out aa.shahed.shahed.biz.crt -days 1461 -sha256 -passin file:<(echo  "${SUBCA_PASS_PHRASE}")
</syntaxhighlight>
</syntaxhighlight>


Line 166: Line 165:
----
----
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
openssl ecparam  -name prime256v1 -genkey  -noout -out server.key
openssl ecparam  -name prime256v1 -genkey  -noout -out aa.shahed.shahed.biz.key
openssl req -new  -key  server.key -out server.csr -config ${SERVER_CNF}
openssl req -new  -key  aa.shahed.shahed.biz.key -out aa.shahed.shahed.biz.csr -config ${SERVER_CNF}
openssl x509 -req -in  server.csr -CA  subCA.pem  -CAkey  subCA.key    -CAcreateserial -out server.crt -days 1024 -sha256 -passin file:<(echo  "${SUBCA_PASS_PHRASE}")
openssl x509 -req -in  aa.shahed.shahed.biz.csr -CA  Shahed_ECC_Sub_CA_2025.pem  -CAkey  Shahed_ECC_Sub_CA_2025.key    -CAcreateserial -out aa.shahed.shahed.biz.crt -days 1461 -sha256 -passin file:<(echo  "${SUBCA_PASS_PHRASE}")
</syntaxhighlight>
</syntaxhighlight>


Line 174: Line 173:
----
----
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
openssl ecparam  -name  secp384r1 -genkey  -noout -out server.key
openssl ecparam  -name  secp384r1 -genkey  -noout -out aa.shahed.shahed.biz.key
openssl req -new  -key  server.key -out server.csr -config ${SERVER_CNF}
openssl req -new  -key  aa.shahed.shahed.biz.key -out aa.shahed.shahed.biz.csr -config ${SERVER_CNF}
openssl x509 -req -in  server.csr -CA  subCA.pem  -CAkey  subCA.key    -CAcreateserial -out server.crt -days 1024 -sha384 -passin file:<(echo  "${SUBCA_PASS_PHRASE}")
openssl x509 -req -in  aa.shahed.shahed.biz.csr -CA  Shahed_ECC_P384_Sub_CA_2025.pem  -CAkey  Shahed_ECC_P384_Sub_CA_2025.key    -CAcreateserial -out aa.shahed.shahed.biz.crt -days 1461 -sha384 -passin file:<(echo  "${SUBCA_PASS_PHRASE}")
</syntaxhighlight>
</syntaxhighlight>



Revision as of 23:46, 22 August 2025

Certificate » Password

makepasswd --chars 16 --count 10 --crypt-md5
:'
wTwezXF4sNLoWBsI   $1$OCSDx0zn$U9WW0udI8pYfIrCCuz2Md1
pfHyhrtvHC4p3oW5   $1$6b/SQRXF$UwLDhHZMyWfsw/S0g6GgZ1
WLNv9CD8XcR3poHp   $1$oVsmVh6Q$Vq4amLARt2iMezos.pT1N.
cCJvJU8rFeHbu4Ix   $1$qlaCpIFj$jWqjkdALO535Ww58k3KE2/
7WeBH8nwMXR78Gdd   $1$afyCWr0p$6bMRrvCnrBeo/BdVJi70E1
IxGjQAogqv3e18rj   $1$60UWcAxR$bFfRlXHzVvZkjTripK9v..
JXveCv0LjsAix5cp   $1$FANZ3WNf$hq2BPd1SXdL.2yvKf0/.7/
eoFqedaFpKKDqVCw   $1$4TCNgJCv$v1z4Y8IR5a4Nan5VkAAe8/
9npSy42dxUH2w15y   $1$APixN7OV$XIe.K3qPi/aezzWyhf7F./
SuwCWQ39RNKUcKAM   $1$qnnfDUE1$ucuWcIpNBuCvCBjCiHaoG/
'

Certificate » RootCA

ROOTCA_CNF="$(mktemp -u)"
cat <<'CNF'|tee ${ROOTCA_CNF} >/dev/null
[ req ]
prompt             = no
distinguished_name = dn

[ dn ]
C                  = BD
ST                 = Dhaka
L                  = Munshiganj
O                  = Shahed, Inc.
OU                 = Shahed
CN                 = shahed.biz
emailAddress       = info@shahed.biz
CNF

echo -n 'Password: ';read -s ROOTCA_PASS_PHRASE;export ROOTCA_PASS_PHRASE;echo
# Password: wTwezXF4sNLoWBsI

🟡 Certificate » RootCA » RSA


openssl genpkey   -algorithm RSA  -out Shahed_RSA_Root_CA_2025.key -aes256 -pass file:<(echo "${ROOTCA_PASS_PHRASE}")
openssl req -x509 -new -nodes     -key Shahed_RSA_Root_CA_2025.key -sha256 -days 7305 -out Shahed_RSA_Root_CA_2025.pem -config ${ROOTCA_CNF} -passin file:<(echo "${ROOTCA_PASS_PHRASE}")

🟢 Certificate » RootCA » EC » 256


openssl genpkey   -algorithm EC   -out Shahed_ECC_Root_CA_2025.key -pkeyopt ec_paramgen_curve:P-256 -pass file:<(echo "${ROOTCA_PASS_PHRASE}")
openssl req -x509 -new -nodes     -key Shahed_ECC_Root_CA_2025.key -sha256 -days 7305 -out Shahed_ECC_Root_CA_2025.pem -config ${ROOTCA_CNF} -passin file:<(echo "${ROOTCA_PASS_PHRASE}")

🟠 Certificate » RootCA » EC » 384


openssl genpkey   -algorithm EC   -out Shahed_ECC_P384_Root_CA_2025.key -pkeyopt ec_paramgen_curve:P-384 -pass file:<(echo "${ROOTCA_PASS_PHRASE}")
openssl req -x509 -new -nodes     -key Shahed_ECC_P384_Root_CA_2025.key -sha384 -days 7305 -out Shahed_ECC_P384_Root_CA_2025.pem -config ${ROOTCA_CNF} -passin file:<(echo "${ROOTCA_PASS_PHRASE}")

Certificate » RootCA » SubCA

SUBCA_CNF="$(mktemp -u)"
cat <<'CNF'|tee ${SUBCA_CNF} >/dev/null
[ req ]
prompt             = no
distinguished_name = dn
attributes         = req_attrs

[ dn ]
C                  = BD
ST                 = Dhaka
L                  = Munshiganj
O                  = Shahed, Inc.
OU                 = Academia
CN                 = shahed.biz
emailAddress       = info@shahed.biz

[ req_attrs ]
challengePassword  = changeit
unstructuredName   = Shahed Academia, Inc.
CNF

SUBCA_EXT="$(mktemp -u)"
cat <<'EXT'|tee ${SUBCA_EXT} >/dev/null
basicConstraints=critical,CA:TRUE,pathlen:0
keyUsage=critical,keyCertSign,cRLSign
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer
EXT

echo -n 'Password: ';read -s SUBCA_PASS_PHRASE;export SUBCA_PASS_PHRASE;echo
# Password: pfHyhrtvHC4p3oW5

🟡 Certificate » RootCA » SubCA » RSA


openssl genpkey   -algorithm RSA  -out  Shahed_RSA_Sub_CA_2025.key -aes256 -pass file:<(echo  "${SUBCA_PASS_PHRASE}")
openssl req -new  -key Shahed_RSA_Sub_CA_2025.key  -out  Shahed_RSA_Sub_CA_2025.csr -config ${SUBCA_CNF}  -passin file:<(echo "$SUBCA_PASS_PHRASE")
openssl x509 -req -in  Shahed_RSA_Sub_CA_2025.csr  -CA  Shahed_RSA_Root_CA_2025.pem -CAkey  Shahed_RSA_Root_CA_2025.key    -CAcreateserial -out  Shahed_RSA_Sub_CA_2025.pem -days 2922 -sha256 -passin file:<(echo "${ROOTCA_PASS_PHRASE}")

🟢 Certificate » RootCA » SubCA » EC » 256


openssl genpkey   -algorithm EC   -out  Shahed_ECC_Sub_CA_2025.key -pkeyopt ec_paramgen_curve:P-256 -pass file:<(echo  "${SUBCA_PASS_PHRASE}")
openssl req -new  -key Shahed_ECC_Sub_CA_2025.key  -out  Shahed_ECC_Sub_CA_2025.csr -config ${SUBCA_CNF}  -passin file:<(echo "$SUBCA_PASS_PHRASE")
openssl x509 -req -in  Shahed_ECC_Sub_CA_2025.csr  -CA  Shahed_ECC_Root_CA_2025.pem -CAkey  Shahed_ECC_Root_CA_2025.key    -CAcreateserial -out  Shahed_ECC_Sub_CA_2025.pem -days 2922 -sha256 -extfile ${SUBCA_EXT} -passin file:<(echo "${ROOTCA_PASS_PHRASE}")

🟠 Certificate » RootCA » SubCA » EC » 384


openssl genpkey   -algorithm EC   -out  Shahed_ECC_P384_Sub_CA_2025.key -pkeyopt ec_paramgen_curve:P-384 -pass file:<(echo  "${SUBCA_PASS_PHRASE}")
openssl req -new  -key Shahed_ECC_P384_Sub_CA_2025.key  -out  Shahed_ECC_P384_Sub_CA_2025.csr -config ${SUBCA_CNF}  -passin file:<(echo "$SUBCA_PASS_PHRASE")
openssl x509 -req -in  Shahed_ECC_P384_Sub_CA_2025.csr  -CA  Shahed_ECC_P384_Root_CA_2025.pem -CAkey  Shahed_ECC_P384_Root_CA_2025.key    -CAcreateserial -out  Shahed_ECC_P384_Sub_CA_2025.pem -days 2922 -sha384 -extfile ${SUBCA_EXT} -passin file:<(echo "${ROOTCA_PASS_PHRASE}")

Certificate » RootCA » SubCA » Server

SERVER_CNF="$(mktemp -u)"
cat <<'CNF'|tee ${SERVER_CNF} >/dev/null
[ req ]
prompt             = no
distinguished_name = dn
req_extensions     = req_ext
attributes         = req_attrs

[ dn ]
C                  = BD
ST                 = Dhaka
L                  = Munshiganj
O                  = Shahed, Inc.
OU                 = Academia
CN                 = shahed.biz
emailAddress       = info@shahed.biz

[ req_ext ]
subjectAltName     = @alt_names

[ req_attrs ]
challengePassword  = changeit
unstructuredName   = Shahed Academia, Inc.

[ alt_names ]
DNS.1              = aa.shahed.shahed.biz
IP.1               = 10.20.30.1
IP.2               = 10.20.40.1
CNF

echo -n 'Password: ';read -s SUBCA_PASS_PHRASE;export SUBCA_PASS_PHRASE;echo
# Password: pfHyhrtvHC4p3oW5

🟡 Certificate » RootCA » SubCA » Server » RSA


openssl genpkey   -algorithm   RSA -out aa.shahed.shahed.biz.key
openssl req -new  -key  aa.shahed.shahed.biz.key -out aa.shahed.shahed.biz.csr -config ${SERVER_CNF}
openssl x509 -req -in   aa.shahed.shahed.biz.csr -CA  Shahed_RSA_Sub_CA_2025.pem  -CAkey  Shahed_RSA_Sub_CA_2025.key     -CAcreateserial -out aa.shahed.shahed.biz.crt -days 1461 -sha256 -passin file:<(echo  "${SUBCA_PASS_PHRASE}")

🟢 Certificate » RootCA » SubCA » Server » EC » 256


openssl ecparam   -name prime256v1 -genkey  -noout -out aa.shahed.shahed.biz.key
openssl req -new  -key  aa.shahed.shahed.biz.key -out aa.shahed.shahed.biz.csr -config ${SERVER_CNF}
openssl x509 -req -in   aa.shahed.shahed.biz.csr -CA  Shahed_ECC_Sub_CA_2025.pem  -CAkey  Shahed_ECC_Sub_CA_2025.key     -CAcreateserial -out aa.shahed.shahed.biz.crt -days 1461 -sha256 -passin file:<(echo  "${SUBCA_PASS_PHRASE}")

🟠 Certificate » RootCA » SubCA » Server » EC » 384


openssl ecparam   -name  secp384r1 -genkey  -noout -out aa.shahed.shahed.biz.key
openssl req -new  -key  aa.shahed.shahed.biz.key -out aa.shahed.shahed.biz.csr -config ${SERVER_CNF}
openssl x509 -req -in   aa.shahed.shahed.biz.csr -CA  Shahed_ECC_P384_Sub_CA_2025.pem  -CAkey  Shahed_ECC_P384_Sub_CA_2025.key     -CAcreateserial -out aa.shahed.shahed.biz.crt -days 1461 -sha384 -passin file:<(echo  "${SUBCA_PASS_PHRASE}")

Playground

ls -alh *.{crt,csr,key,pem,srl}
rm -rf  *.{crt,csr,key,pem,srl}
rm -rf  ${SUBCA_CNF}
rm -rf ${SERVER_CNF}

nmap vpn.shahed.biz --reason -Pn --top 20
nmap vpn.shahed.biz --reason -Pn -p25,465,587,993
sudo tail -n100 -f /var/log/auth.log
sudo tail -n100 -f /var/log/kern.log
sudo cat /etc/shadow|grep nobody
last

sudo apt-get install makepasswd
echo 'sadaqah!'|makepasswd --crypt-md5 --clearfrom=-
makepasswd --chars 12 --count 5 --crypt-md5
makepasswd --chars 12 --count 5 --crypt
makepasswd --chars 12 --count 5
makepasswd --chars 12

openssl s_client -tls1   -connect cid.chorke.org:443 </dev/null
openssl s_client -tls1_1 -connect cid.chorke.org:443 </dev/null
openssl s_client -tls1_2 -connect cid.chorke.org:443 </dev/null
openssl s_client -tls1_3 -connect cid.chorke.org:443 </dev/null
xdg-open https://www.cdn77.com/tls-test/result?domain=k8s.aa.shahed.shahed.biz &>/dev/null &
xdg-open https://www.cdn77.com/tls-test/result?domain=k8s.ab.shahed.shahed.biz &>/dev/null &
xdg-open https://www.cdn77.com/tls-test/result?domain=k8s.ac.shahed.shahed.biz &>/dev/null &
xdg-open https://www.cdn77.com/tls-test/result?domain=k8s.ad.shahed.shahed.biz &>/dev/null &

References