自制证书(STL)-创建https证书

这篇具有很好参考价值的文章主要介绍了自制证书(STL)-创建https证书。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

生成证书流程

先上一张图,这张图就是用openssl生成证书的整个流程了,如何看这个图呢?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zni606kq-1663939003658)(/media/202208/2022-08-26_094445_343002.png)]

这个图有A、B、C三个部分,分别用三种颜色框选了一下,A部分是CA机构根证书的生成过程,这个过程需要先生成CA机构的私钥,再由CA机构的私钥生成CA机构证书申请文件,然后再由这两个文件生成根证书。

B部分是生成服务器私钥,然后由服务器私钥生成服务器证书申请文件。

C部分是最后一部分,也就是生成服务器的公钥证书,服务器的公钥证书需要三部分一起来生成,A部分的CA机构的私钥,CA机构的申请证书文件,B部分的服务器证书申请文件,这三部分一起来生成服务器的公钥证书。

所谓JKS(Java Key Store)就是利用Java Keytool 工具生成的Keystore文件(文件后缀:*.jks *.keystore 或无后缀),JKS文件由公钥和私钥构成,其中的公钥就是我们所说的证书,即cer为后缀的文件,而私钥就是密钥,即以key为后缀的文件。可以通过Keytool结合Openssl提取jks文件的公钥和私钥。jks格式的证书主要使用与JAVA程序。

OpenSSL 可以生成自签证书 适用范围更广

keytool没办法签发证书,而openssl能够进行签发和证书链的管理

方式1 使用openssl 生成证书

生成 CA证书

  1. 生成CA机构的私钥
openssl genrsa -out ca.key 1024
  1. 生成CA机构自己的证书申请文件
openssl req -new -key ca.key -out ca.csr
  1. 生成自签名证书,CA机构用自己的私钥和证书申请文件生成自己签名的证书,俗称自签名证书,这里可以理解为根证书。
openssl x509 -req -in ca.csr -signkey ca.key -out ca.crt

生成服务器证书

  1. 生成服务器私钥。
openssl genrsa -out server.key 1024

  1. 根据服务器私钥文件生成证书请求文件,这个文件中会包含申请人的一些信息,所以执行下面这行命令过程中需要用户在命令行输入一些用户信息。可以通过con name 绑定域名。
openssl req -new -key server.key -out server.csr
  1. 根据CA机构的自签名证书ca.crt或者叫根证书生、CA机构的私钥ca.key、服务器的证书申请文件server.csr生成服务端证书。
openssl x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt

上面的过程其实是模拟了各大https证书厂商生成https证书的过程,其中涉及到了根证书等等一些概念,如果你不是太明白也没有关系,我们还有B方案,我只想要证书,不想搞得太深,那么请使用如下方法,简便快捷。

只需要三步:

## 第一步,生成服务器私钥:

openssl genrsa -out server.key 1024

## 第二步,根据私钥和输入的信息生成证书请求文件:

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

## 第三步:用第一步的私钥和第二步的请求文件生成证书:

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

这样我们就拿到了私钥server.key和证书server.crt。

为什么第二种方式比第一种简单并且步骤还少呢?这里简单介绍一下,第一种方式是模拟https厂商生成https证书的简易过程,https证书厂商一般都会有一个根证书,这里我们模拟生成了https厂商根证书,也就是第一种方法的1、2、3步骤。

在实际应用中,这些步骤对用户来说是不可见的,这里只是简单模拟,通常证书申请用户只需要将服务器的公钥(注意不是私钥)和服务器证书申请文件交给https证书厂商即可,之后https厂商会通过邮件回复一个服务器公钥证书,拿到这个证书和自己生成的服务器私钥就可以搭建https应用了。

第二种方法比较简单,是因为我们自己生成证书在本地测试,我们既是https厂商的角色也是用户角色,我们直接用自签名证书当做服务器证书就可以了,简单快捷,不过这里只适用于测试。

openssl生成证书供java使用

java程序使用的证书是JKS格式,因此需要将openssl生成的证书进行格式转换。
crt证书转为p12(需要输入一个密码),需要使用到上面的 server.crt server.key

openssl pkcs12 -export -in server.crt -inkey server.key -out server.p12

使用keytool把p12证书转为jsk格式

keytool -importkeystore -srckeystore server.p12 -srcstoretype PKCS12 -srcstorepass changeit -alias cas -deststorepass changeit -destkeypass changeit -destkeystore server.jks

生成的server.jks 可以用于springboot项目 ,applicationg.properties 配置参考:

server.ssl.key-store=file:/etc/cas/server.jks
server.ssl.key-store-password=changeit
server.ssl.key-password=changeit

快捷方式 使用mkcert 生成证书

  1. 请在管理员模式下打开Powershell 安装mkcert
Set-ExecutionPolicy Bypass -Scope Process -Force; `
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072;`
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

choco install mkcert -y

  1. 生成证书
#创建一个用来保存证书文件的目录
mkdir -p .cert

#生成 RootCA
mkcert -install

#可以一次性为多个域名创建证书,这个非常强大
mkcert -key-file ./.cert/key.pem -cert-file ./.cert/cert.pem cvicse.com "*.cvicse.com"  localhost 127.0.0.1 ::1

方式2 使用keytool 生成证书

1、生成证书


keytool -genkey -alias cas -keyalg RSA -keysize 1024 -keypass changeit -validity 3650 -keystore  F:\etc\cas\thekeystore -storepass changeit


c) 2019 Microsoft Corporation。保留所有权利。

您的名字与姓氏是什么?
  [Unknown]:  sso.ks.com
您的组织单位名称是什么?
  [Unknown]:  sso.ks.com
您的组织名称是什么?
  [Unknown]:  sso.ks.com
您所在的城市或区域名称是什么?
  [Unknown]:  ks
您所在的省/市/自治区名称是什么?
  [Unknown]:  js
该单位的双字母国家/地区代码是什么?
  [Unknown]:  china
CN=sso.ks.com, OU=sso.ks.com, O=sso.ks.com, L=ks, ST=js, C=china是否正确?
  []:  y


Warning:
生成的证书 uses a 1024 位 RSA 密钥 which is considered a security risk. This key size will be disabled in a future update.

2、导出证书


keytool -export -alias cas -keystore  F:\etc\cas\thekeystore -file  F:\etc\cas\cas.crt -storepass changeit

3、把证书导入到证书信任库
使用管理员权限运行


keytool -import -keystore "%JAVA_HOME%\jre\lib\security\cacerts" -file F:\etc\cas\cas.crt -alias cas-storepass changeit

如果你想查看证书信任库都有哪些证书,输入命令为:


keytool -list -alias cas-keystore "%JAVA_HOME%\jre\lib\security\cacerts" -storepass changeit

删除证书,输入命令为:

keytool -delete -alias cas -keystore "%JAVA_HOME%\jre\lib\security\cacerts" -storepass changeit

4、修改tomcat的server.xml文件

直接新增,里面的证书路径和密码根据你自己的修改

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               keystoreFile="F:\etc\cas\thekeystore" keystorePass="changeit"
               clientAuth="false" sslProtocol="TLS" URIEncoding="UTF-8"/>

5、到bin目录启动startup.bat,然后浏览器里输入https://sso.ks.com:8443/

从keystore中导出证书和私钥

导出证书一句话解决,可能需要输入密码。

  1. 导出证书
 keytool -export -alias cas -keystore thekeystore -rfc -file cas.cert

导出私钥,一共分三步,中间需要输入密码。
jks文件中的私钥不能直接得到,需要通过openssl将jks文件转换成p12格式后再进行提取

2.导出私钥

2.1 得到pkcs12格式的证书

keytool -importkeystore -srckeystore thekeystore -destkeystore ck.p12 -deststoretype pkcs12

2.2 转化成pem格式的文件

openssl pkcs12 -in ck.p12 -nocerts -nodes -out cas.key

参考:
https://www.jianshu.com/p/eb52e0f5ee85
https://blog.csdn.net/qq_20967969/article/details/123443776
https://blog.csdn.net/lu_wei_wei/article/details/111264842
https://www.jianshu.com/p/5cff7accfd78文章来源地址https://www.toymoban.com/news/detail-408469.html

到了这里,关于自制证书(STL)-创建https证书的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • https-OPenSSL证书生成及自签名证书

    目录 SSL/TLS 1、搭建OPenssl服务器 1.1、下载  1.2、安装下载好的exe程序 2、服务器端证书-生成key、CSR、CRT 2.1、进入如下目录,执行cmd  2.2、生成一个私钥key  2.3、由生成的私钥key生成一个待签名的CSR证书文件(公钥)  2.4、查看证书内容 3、自建CA证书 3.1、创建CA私钥 3.2、生成C

    2024年02月08日
    浏览(43)
  • Https域名解析——腾讯云免费SSL证书申请流程

    最近购买了一台腾讯云服务器,采用腾讯免费域名解析,只是绑定成功http请求及www请求。网站地址为:http://kalehu.com https一直不能访问,一直以为腾讯云与阿里虚拟主机绑定一样,只需勾选一个选项,可以直接完成,后来发现思路是错误。服务器绑定https,需要申请SSL证书之

    2024年02月09日
    浏览(61)
  • 【实现HTTPS访问】Nginx + SSL证书 + 域名整合流程详解

    1、购买云服务器 我购买的是 阿里云ECS(2核2G) ,具体购买流程这里不做过多讲解。 注意 :中国大陆的阿里云服务器(套餐为3个月以上),想要使用域名访问服务器需要 备案 ,低于3个月使用期的服务器不可以备案(不可以使用域名访问),我购买的是7天有效期,服务器

    2024年01月22日
    浏览(59)
  • 【SSL】用Certbot生成免费HTTPS证书

    服务器:CentOS7.x 示例域名: www.example.com 域名对应的web站点目录: /usr/local/openresty/nginx/html 注意,示例域名 www.exanple.com在certbot机器上一定要解析在公网ip,而不是解析在内网ip,否则会报错无法解析: Let’s Encrypt需要验证网站的所有权才能颁发证书, 官方称之为challenge(挑战

    2024年02月08日
    浏览(60)
  • 【使用openssl生成https v3版本证书】

    HTTPS是在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性,安全基础为SSL(安全套接字协议),或者叫TLS。 总的来说, 先通过非对称加密传输密钥,之后用该密钥对数据进行对称加密。 客户端向服务器发起HTTPS请求,连接到服务器的443端口 服务器端有一个密钥对

    2024年01月17日
    浏览(38)
  • https解决方案-利用keytool生成证书

    HTTPS其实是有两部分组成:HTTP + SSL / TLS, 也就是在HTTP上又加了一层处理加密信息的模块,并且会进行身份的验证。 就是自己生成的证书,并不是官方生成的证书。 除非是很正式的项目,否则使用自己签发的证书即可,因为官方生成证书是要花钱滴。 第一步:为服务器生成

    2024年02月01日
    浏览(36)
  • Centos7下生成https自签名证书

    使用带密码的私有秘钥文件时需要输入密码,这里直接输入:123456 这里需要输入信息,随便填写即可 这里让输入密码直接为空 参考文章:https://blog.csdn.net/yandong634/article/details/132404653

    2024年02月06日
    浏览(38)
  • windows下cerbot生成https免费安全证书

    1.使用访问文件权限来生成证书 2.使用dns添加后进行生成证书 手动续期

    2024年04月25日
    浏览(33)
  • 前端vue部署到nginx并且配置https安全证书全流程

            说明一下: 本人原本使用的是docker安装nginx通过挂载实现部署,但是出现了很多bug(例如部署安全证书后还是无法访问),所以困扰了很久,最后改为本地安装nginx,最终在不懈的努力下终于按照好了,特此记录一下。         一:整个流程:            

    2024年02月07日
    浏览(47)
  • nginx编译以及通过自定义生成证书配置https

    nginx安装编译安装以及配置https,需要 gcc-c++ pcre-devel openssl openssl-devel 软件。因此需要先安装相关软件。 openssl/openssl-devel :主要用于nginx编译的 http_ssl_module 模块安装以及证书的生成。 依次执行如下命令: 解压压缩包 执行属性配置 http_ssl_module:支持配置https模块 –prefix=/us

    2024年02月14日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包