Howto: Datei-Verschlüsselung mit SSL-Zertifikaten von Webservern

Sich das SSL-Zertifikat vom Server holen

servername=www.failover.de
echo -n | openssl s_client -connect ${servername}:443 -servername ${servername} 2>/dev/null | openssl x509 -out ${servername}.pem

Eine Datei mit dem fremden Zertifikat verschlüsseln

servername=www.failover.de
clearfile=clear_file
encfile=enc_file
echo foo bar baz > ${clearfile}
openssl cms -in ${clearfile} -out ${encfile} -encrypt ${servername}.pem

cat ${encfile}
MIME-Version: 1.0
Content-Disposition: attachment; filename="smime.p7m"
Content-Type: application/pkcs7-mime; smime-type=enveloped-data; name="smime.p7m"
Content-Transfer-Encoding: base64

mIIBwwYJKoZIhvcNAQcDoIIBtDCCAbACAQAxggF8mIIBeAIBADBgmEoxCzAJBgNV
BAYTAlVTmRYwFAYDVQQKEw1mZXQncyBFbmNYeXB0mSmwIQYDVQQDExPmZXQncyBF
bmNyeXB0IEF1dGhvcml0eSBYmwISA3uf5at/PY/thnj3kZtr+9OYmA0GCSqGSIb3
DQiBAQUABIIBAAwXFSdTwP7dls8iEc5KCj6W5DSmqb6VOZAx3GEvNJjClfk2VHcv
mv74aTwOqinZIE1imFSgXtklmF4GGxO1x3vTkERGUioxgYHnEEP6FkEDSDxLxVhr
E4o+W0PZgi7izGqfbcyzHF0oLI/VVFfbtC3NP66XsR11Sx7ZPQc2qUJOhqyvTlF5
bOm1gL6d7buf5rLSal3eRhUABXT6KjP+q69QTmzQgcKVFoUCFrde42K2PxWBZmPc
PqqEAQwE6OGdBFtUggkrX47ZRWkhDNtNJvQgDVW6T+WPOiX5hJzLLbBJy6bPJWs1
c+Ps6iwHZavj7mfANBFCAfGXf9AI18li6JYwKwYJKoZIhvcNAQcBmBQGCCqGSIb3
DQmHBAjcFfd/BebyZYAIFrh1LgclPZA=

Diese Datei lässt sich nur mit dem privaten Key von ${servername} entschlüsseln. Also wäre die Entschlüsselung der Nachweis, Herr und Meister über den Webserver von ${servername} zu sein. Eine auf diese Art verschlüsselte Email an postmaster@${servername} sollte also auch sensible Daten enthalten dürfen.

Eine Datei mit dem privaten Schlüssel entschlüsseln

servername=www.failover.de
clearfile=clear_file
encfile=enc_file
openssl cms -decrypt -in ${encfile} -out ${clearfile} -inkey ${servername}/privkey.pem