• k8s环境生成自签名证书配置secret tls并配置到浏览器


    背景

    最近公司的网站偶尔会出现“network error”的报错导致网页不稳定,打开开发者工具发现报错为“Failed to load resource: net ::ERR_CERT_AUTHORITY_INVALIED”原因为网页存在认证问题。解决措施有三种:1.申请域名购买证书;2.自己生成自签名证书;3.将https访问方式改为http。综合考虑成本和安全因素后决定使用自签名证书来解决此问题。

    生成自签名证书

    1.使用命令行交互方式生成证书

    生成自签名证书需要用到openssl工具,先检查下服务器上有没有openssl,如果没有那就yum install openssl安装一下
    生成自签名证书步骤
    (1)生成一个私钥

    openssl genrsa -des3 -out server.key 2048
    
    • 1

    (2)生成一个CSR

    openssl req -new -key server.key -out server.csr
    
    • 1

    这里需要填写国家,城市,组织,域名等一些信息

    Country Name (2 letter code) [AU]:CN
    State or Province Name (full name) [Some-State]:SH
    Locality Name (eg, city) []:SH
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:XXX
    Organizational Unit Name (eg, section) []:XXX
    Common Name (e.g. server FQDN or YOUR name) []:XXX.com
    Email Address []:XXXX
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    (3)生成自签名证书

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

    这样我们就生成了一个简单的自签名证书

    2.使用脚本方式生成自签名证书

    命令行交互式方式需要一个个的手动输入国家,城市等信息很容易出错。使用脚本方式可以快速的生成自签名证书。

    cat cert.sh
    
    • 1
    #!/bin/sh
    
    filename="cert"
    
    printf "[req]
    prompt                  = no
    default_bits            = 4096
    default_md              = sha256
    encrypt_key             = no
    string_mask             = utf8only
    
    distinguished_name      = cert_distinguished_name
    req_extensions          = req_x509v3_extensions
    x509_extensions         = req_x509v3_extensions
    
    [ cert_distinguished_name ]
    Country Name  = CN
    State or Province Name = SH
    Locality Name  = SH
    Organization Name  = XXX
    Organizational Unit Name = XXX
    Common Name = XXX.com
    Email Address = XXXX
    
    [req_x509v3_extensions]
    basicConstraints        = critical,CA:true
    subjectKeyIdentifier    = hash
    keyUsage                = critical,digitalSignature,keyCertSign,cRLSign #,keyEncipherment
    extendedKeyUsage        = critical,serverAuth #, clientAuth
    subjectAltName          = @alt_names
    
    [alt_names]
    DNS.1 = XXX.com
    
    
    openssl req -x509 -newkey rsa:2048 -keyout /root/ssl/server.key -out /root/ssl/server.crt -days 3650
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    增加cert.sh执行权限

    chmod +x cert.sh
    
    • 1

    执行cert.sh,生成自签名证书

    sh cert.sh
    
    • 1

    用生成的自签名证书创建secret证书,用于域名访问

    kubectl create --namespace=XXX secret tls tls-certificate-XXX.com --key /root/ssl/server.key --cert /root/ssl/server.crt
    
    • 1

    浏览器中添加证书

    生成证书后我们需要将证书添加到浏览器中,否则访问网页依然会有该网站不安全的提示
    在这里插入图片描述
    浏览器添加证书方法如下
    (1)打开浏览器设置搜索安全
    在这里插入图片描述
    点进去选择管理证书
    在这里插入图片描述
    (2)导入证书
    点击管理证书,选择“受信任的根证书颁发机构”,点击导入
    在这里插入图片描述
    将本地的证书导入进来
    在这里插入图片描述
    选择将证书存储在“受信任的根证书颁发机构”
    在这里插入图片描述
    点击下一步,最后会提示导入成功
    在这里插入图片描述

    此时再次访问网页就没有https不安全的提示了

    在这里插入图片描述

  • 相关阅读:
    win10系统单独编译和使用WebRTC的回声消除(AEC)、音频增益(AGC)、去噪(NS)模块
    Redis过期删除策略和内存淘汰策略
    ES6 类的扩展
    Python爬虫之Js逆向案例(7)-知hu最新x-zse-96之rpc方案
    BloomFilter:布隆过滤器和Redis缓存穿透
    解决VirtualBox需要安装内核的DKMS的问题 查看 linux 内核
    Spring面试题1:Spring框架的核心功能是什么?Spring框架的好处是什么?
    vue+element-ui el-select + el-tree下拉树形结构组件(支持筛选过滤)
    纯知识分享||Java多线程又遇到死锁?三招帮你彻底解决
    非支配排序遗传算法NSGA
  • 原文地址:https://blog.csdn.net/lucky_ykcul/article/details/126486945