zoukankan      html  css  js  c++  java
  • 使用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%
  • 相关阅读:
    delphi TreeView 从数据库添加节点的四种方法
    mac攻略(3) -- brew使用
    mac攻略(2) -- apache站点配置
    mac攻略(1) -- 简单配置php开发环境
    Mac通过brew安装reds、memcached
    golang urlencode
    golang GET 出现 x509: certificate signed by unknown authority
    git取消文件跟踪
    golang使用http client发起get和post请求示例
    PHP判断SQL语句是否合法:mysqli_error()
  • 原文地址:https://www.cnblogs.com/t0000/p/13404750.html
Copyright © 2011-2022 走看看