• 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证书已经安装成功了
     
     
     
     
     
  • 相关阅读:
    AOP 相关包
    Dubbo学习(一) Dubbo原理浅析
    maven 三个仓库表
    关于servlet中doGet和doPost乱码再一次理解
    关于对String中intern方法的理解
    模拟文件上传(五):为文件添加描述信息
    模拟文件上传(四):对于前面三版中一些出错细节进行处理
    对于模拟文件上传(三)中,批量上传,传空值抛异常前台约束实现
    模拟文件上传(三):使用apache fileupload组件进行文件批量上传
    模拟文件上传(二):使用apache fileupload组件进行文件上传
  • 原文地址:https://www.cnblogs.com/linuxws/p/16383508.html
Copyright © 2020-2023  润新知