使用docker 创建SSL 证书

今天在学习gRPC的安全通信时,需要创建SSL自签名证书,以往是在linux 虚拟机中创建,现在学习了docker,我尝试在docker上创建证书也非常方便。

1,启动 frapsoft/openssl 镜像

docker run -it --entrypoint /bin/ash frapsoft/openssl

2,创建一个私钥

openssl genrsa -out server.key 2048

3,根据私钥生成csr

如果想从一个认证中心(Certificate Authority,CA)获取一个SSL证书,我们需要生成一个证书签名请求(Certificate Signing Reqeusts,CRSs)。一个CSR主要包含钥匙对中的公钥,以及其它一些重要的信息。
openssl req -new -sha256 -key server.key -out server.csr

执行上面的命令后,需要完成一些信息的填写,主要有:

Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

填写完这些信息后,就会生成一个证书签名请求(server.csr

4,生成证书

如果想使用一个SSL证书来对通信进行加密,但是不需要使用CA签字的证书,那么我们可以生成一个自签名的证书。

使用前面生成的私钥(server.key)以及证书签名请求(server.csr),我们可以生成一个自签名的证书:

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

选项-x509指定req来生成一个自签名的证书。-days 3650指定了证书的有效期是3650天。-signkey指定了私钥,而-in指定了证书签名请求。

这样,就能生成一个自签名的证书(server.crt)。

5,将证书复制到宿主机

0) 将证书以及私钥,证书签名请求文件(server.key,server.csr,server.crt)放到一个文件夹

mkdir certificate
mv server* /certificate/

1) 新开一个cmd窗口,执行 docker ps 命令查看容器id,例如:

docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a6db71863976 frapsoft/openssl "/bin/ash" 32 minutes ago Up 32 minutes angry_spence

2)使用docker cp 命令,将文件夹复制到宿主机当前目录

docker cp a6db71863976:/certificate %cd%
原文地址:https://www.cnblogs.com/t0000/p/13404750.html