uos上配置apache ssl(https)

 https://blog.csdn.net/deng_xj/article/details/106786151?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-106786151-blog-34434165.pc_relevant_downloadblacklistv1&spm=1001.2101.3001.4242.1&utm_relevant_index=3

密码学:一文读懂常用加密技术原理及其逻辑与应用方法

 

https://baijiahao.baidu.com/s?id=1685474345600994715&wfr=spider&for=pc 

18 张图彻底弄懂 HTTPS 的原理!

 

  证书验证的过程是使用非对称加密的,客户端对服务器端发起请求,服务器返回一个证书,客户端验证这个证书的合法性,如果这个证书是合法的,那么就生成一个随机值,利用这个随机值作为对称加密的钥匙

  一个数字证书通常包含了:- 公钥;- 持有者信息;- 证书认证机构(CA)的信息;- CA 对这份文件的数字签名及使用的算法;- 证书有效期;- 还有一些其他额外信息;

  为了让服务端的公钥被大家信任,服务端的证书都是由 CA (Certificate Authority,证书认证机构)签名的,CA 就是网络世界里的公安局、公证中心,具有极高的可信度,所以由它来给各个公钥签名,信任的一方签发的证书,那必然证书也是被信任的。

 
之所以要签名,是因为签名的作用可以避免中间人在获取证书时对证书内容的篡改


数字证书签名流程:

首先 CA 会把持有者的公钥、用途、颁发者、有效时间等信息打成一个包,然后对这些信息进行 Hash 计算,得到一个 Hash 值;
然后 CA 会使用自己的私钥将该 Hash 值加密,生成 Certificate Signature,也就是 CA 对证书做了签名;
最后将 Certificate Signature 添加在文件证书上,形成数字证书;

 
证书验证流程:

首先客户端会使用同样的 Hash 算法获取该证书的 Hash 值 H1;
通常浏览器和操作系统中集成了 CA 的公钥信息,浏览器收到证书后可以使用 CA 的公钥解密 Certificate Signature 内容,得到一个 Hash 值 H2 ;
最后比较 H1 和 H2,如果值相同,则为可信赖的证书,否则则认为证书不可信。


一句话概括就是使用公钥对证书签名解密的过程
非对称加密的算法:RSA、Elgamal、背包算法、Rabin、D-H、ECC (椭圆曲线加密算法)

 

1.创建私钥文件

openssl genrsa -des3 -out server.key 2048

 去掉-des3 就不会需要密码,建议加上。


生成命令如下,其中:/C=CN(国家缩写)/ST=(省份)/L=(城市)/O=(组织名称):

openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -subj "/C=CN/ST=ZheJiang/L=HangZhou/O=MJY" -keyout CA-private.key -out CA-certificate.crt -reqexts v3_req -extensions v3_ca
openssl genrsa -out private.key 2048
openssl req -new -key private.key -subj "/C=CN/ST=ZheJiang/L=HangZhou/O=MJY/CN=127.0.0.1" -sha256 -out private.csr
#最后的 CN=IP地址或域名

 

生成ext文件:

#vim private.ext
#复制如下内容到private.ext文件中

[ req ]
default_bits        = 1024
distinguished_name  = req_distinguished_name
req_extensions      = san
extensions          = san
[ req_distinguished_name ]
countryName         = CN
stateOrProvinceName = Definesys
localityName        = Definesys
organizationName    = Definesys
[SAN]
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = IP:127.0.0.1

#其中ip后内容,改成自己需要的ip地址(服务器ip或者域名)
#最后使用 :wq 保存退出

 生成CA证书

openssl x509 -req -days 3650 -in private.csr -CA CA-certificate.crt -CAkey CA-private.key -CAcreateserial -sha256 -out private.crt -extfile private.ext -extensions SAN

 

 

2.创建CSR(Certificate Signing Request)文件

openssl req -new -key server.key -out server.csr
输入密码之后还需要填写一些信息:

信息注解
Country Name (2 letter code) [AU]:CN ←输入国家代码
State or Province Name (full name) [Some-State]:SHANGHAI ← 输入省名
Locality Name (eg, city) []:SHANGHAI ←输入城市名
Organization Name (eg, company) [Internet Widgits Pty Ltd]:COMPANY ← 输入公司名
Organizational Unit Name (eg, section) []:RSA ← 输入组织单位名
Common Name (eg, YOUR name) []:virtual-machine ← 输入主机名(想要开启https的主机名)
Email Address []:123@163.com ←输入电子邮箱地址

 3.自己签发证书

openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

若以上步骤执行正常,当前目录会生成server.key、server.csr、server.crt三个文件

复制到相应目录

sudo cp server.crt /etc/ssl/certs

sudo cp server.key /etc/ssl/private

 

ubuntu系统上如何添加新的根证书

如果自己部署了一个CA系统,或者使用openssl生成了一个自签名的证书,如何让ubuntu系统信任这些证书呢

添加证书:
首先,复制pem格式的根证书,重命名为 .crt格式
然后,执行下边的命令
$sudo cp 证书路径.crt /usr/local/share/ca-certificates
$sudo update-ca-certificates

update-ca-certificates命令将PEM格式的根证书内容附加到/etc/ssl/certs/ca-certificates.crt ,而/etc/ssl/certs/ca-certificates.crt 包含了系统自带的各种可信根证书.

删除证书:
$sudo rm -f /usr/local/share/ca-certificates/证书名称.crt
$sudo update-ca-certificates

 

修改ssl配置文件

sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/default-ssl
gedit /etc/apache2/sites-enabled/default-ssl.conf

 

 

 指定已经生成的crt证书和私钥位置

 

修改完成后,重启服务

service apache2 restart

若成功启动服务,就可以使用https访问了

 

 查看下apache2的日志

 

 原因:使用的私钥长度太短了,需要高于1024位

解决方法:重新生成一个2048位的密钥和证书

 

curl wget 不验证证书进行https请求

$ wget 'https://x.x.x.x/get_ips' --no-check-certificate
$ curl 'https://x.x.x.x/get_ips' -k

添加https证书信任

Centos 导入https 证书

安装 ca-certificates:

yum install ca-certificates
启用动态ca配置功能
update-ca-trust enable

 将其添加到/etc/pki/ca-trust/source/anchors/

cp foo.crt /etc/pki/ca-trust/source/anchors/

使用命令

update-ca-trust

ubuntu 导入https 证书 

 Ubuntu上CA证书的配置可以通过工具ca-certificates来方便的进行。该工具默认是随Ubuntu安装的,如果没有可以通过下面的命令来安装:

    sudo apt-get install ca-certificates

需要安装CA证书我们只需要将其放在”/usr/share/ca-certificates”目录或其子目录下,ca-certificates工具就能自动扫描到。为了不与其它根证书混淆,我们创建一个子目录名为”extra”:

    sudo mkdir /usr/share/ca-certificates/extra

然后将待安装的证书拷贝到刚刚创建的目录下:

    sudo cp CASHLibCACert.crt /usr/share/ca-certificates/extra/CASHLibCACert.crt

(注意这里的证书是.crt的扩展名)

接下来让ca-certificates工具帮我们安装CA证书:

    sudo dpkg-reconfigure ca-certificates

 

 

 

选择”Yes”,我们能看到待安装的CA证书已经被扫描到了,选中它(点空格键)然后选”OK”就行了。

 

 

 
看到这样的消息就说明CA证书已经安装成功了
 
 
 
 
 
posted @ 2022-06-16 20:45  linuxws  阅读(725)  评论(0编辑  收藏  举报