基本概念
TLS:传输层安全协议 Transport Layer Security的缩写
SSL:安全套接字层 Secure Socket Layer的缩写
TLS与SSL对于不是专业搞安全的开发人员来讲,可以认为是差不多的,这二者是并列关系
KEY 通常指私钥。
CSR 是Certificate Signing Request的缩写,即证书签名请求,这不是证书,可以简单理解成公钥,生成证书时要把这个提交给权威的证书颁发机构。
CRT 即 certificate的缩写,即证书。
X.509 是一种证书格式.对X.509证书来说,认证者总是CA或由CA指定的人,一份X.509证书是一些标准字段的集合,这些字段包含有关用户或设备及其相应公钥的信息。
X.509的证书文件,一般以.crt结尾,根据该文件的内容编码格式,可以分为以下二种格式:
PEM - Privacy Enhanced Mail,打开看文本格式,以"-----BEGIN…"开头, "-----END…"结尾,内容是BASE64编码.
Apache和*NIX服务器偏向于使用这种编码格式.
DER - Distinguished Encoding Rules,打开看是二进制格式,不可读.
Java和Windows服务器偏向于使用这种编码格式
OpenSSL 相当于SSL的一个实现,如果把SSL规范看成OO中的接口,那么OpenSSL则认为是接口的实现。接口规范本身是安全没问题的,但是具体实现可能会有不完善的地方,比如之前的"心脏出血"漏洞,就是OpenSSL中的一个bug.

Keytool 是一个有效的安全钥匙和证书的管理工具.
openssl genrsa -des3 -out server.key 2048 # 生成key(带密码)
openssl genrsa -out server.key 2048 # 生成key 不带密码
openssl req -new -key server.key -out server.csr # 生成csr
keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore # 生成 keystore
keytool -delete -alias testalias -keystore test.keystore # 删除keystore 中的key
keytool -list -v -keystore test.keystore # 查看keysotre 里面的信息
keytool -import -alias pds -file server.crt -keystore test.keystore # 将crt 导入到keystore 中
keytool -genkey -file server.key -alias server -validity 36500 -keystore server.keystore # 指定key 生成keystore
openssl x509 -noout -text -in server.crt # 查看证书信息
cat server.key server.crt > server.pem # 合并两个文件为pem
参考:
https://blog.51cto.com/11736068/2052425
https://www.cnblogs.com/whatlonelytear/p/5913538.html
https://blog.csdn.net/fhqsse220/article/details/45918829
https://ask.dcloud.net.cn/article/35777
https://blog.csdn.net/meng564764406/article/details/79427687
apache ssl 配置
http://www.jinbuguo.com/apache/manual/mod/mod_ssl.html