首页 > 其他分享 >openssl创建证书

openssl创建证书

时间:2023-10-04 13:22:07浏览次数:29  
标签:Name 证书 创建 openssl pem token key pubkey

安装

brew install openssl

使用

root@MACdeMBP rem_key # openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
Generating a 4096 bit RSA private key
................................................................................................++
.................................++
writing new private key to 'key.pem'
Enter PEM pass phrase:    # 这边输入你要设置的密码,比如123456
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) []:CN  # 国家名称
State or Province Name (full name) []:Shanghai  # 省份
Locality Name (eg, city) []:shanghai # 城市
Organization Name (eg, company) []:py # 组织机构
Organizational Unit Name (eg, section) []:py  # 机构部门
Common Name (eg, fully qualified host name) []:*.lw.com # 域名
Email Address []:[email protected] # 邮箱

# 上面操作完成后会在当前目录下生成cert.pem	key.pem两个文件

# 生成pubkey.pem文件
root@MACdeMBP rem_key # openssl x509 -pubkey -noout -in cert.pem > pubkey.pem  
root@MACdeMBP rem_key # ls
cert.pem	key.pem		pubkey.pem
# 生成privkey.pem文件,要输入之前设置的密码
root@MACdeMBP rem_key # openssl rsa -in key.pem -out privkey.pem
Enter pass phrase for key.pem:
writing RSA key

# 文件说明
cert.pem 文件包含证书
pubkey.pem 文件包含从证书提取的公钥
key.pem 文件包含RSA私钥,加密的
privkey.pem 文件包含RSA私钥,非加密的

使用jwt进行加密解密

import jwt

with open('pubkey.pem') as f:
    PUBKEY = f.read()

with open('privkey.pem') as f:
    PRIVKEY = f.read()


def create_token(**data):
    return jwt.encode(data, PRIVKEY, algorithm='RS512')


def read_token(token):
    return jwt.decode(token, PUBKEY, algorithms='RS512')


token = create_token(some='data', inthe='token')
print(token)
# eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJzb21lIjoiZGF0YSIsImludGhlIjoidG9rZW4ifQ.WH7pak1eGR7-C_WfHcOma3UpHHQucb5VDR2hcJTaFx80F4ny53ETuIpdWB0tJuW6QvI2F7OBUwJaYzlreV2-e8gUX2mZKoXj99YKmvlOg_mskahLVBmQQwgoIXAqsNiAcHUFG5QeJvN10HLoLVCnvalXyIYI_yEOCU3JXUaSnawKmhgDKA--S0EtGOiV4fxw-S8yGK8W-nLhTwSZqAGpg27fJZcdsv5YaV8LR-ledltqCLEKrYvf-1p28TQLLKHxCFU1cJyYK_zA4jtR_tOa7zrLPaE0iiQpkx16YxoqWEHM4f_nKBIi1Wf9Gvh71DjEdmLOo_4LrXKhsg-OWjoDSc0FoFjJv70GPgF-uBKC-4FmR9N4EzIyAhcDssQuYtJLc0_V0lmd-kw4xjKmNmDSlUIHKyrzm_GnILo23T7BplYeUzDHi1XIwP9qnZuOaN4jkCdfUPDyNouHhFhHb5QypJaWAZIkBIESqTTQeuQVv_K_8CGNPzzNP9AtWrUJjMwen87yNN2X4JbKI_reJblGGTCwhQ5HF5OStpyfGrJwgtKZJVNoE3EQv5RrCxVk6VNUHu33EyDIiN-15FR8PyN6Fc0w-g5_j7TIjGA-ZBnJ_UuDMymuMwUB7sat14Bx7tdQ6sX22fw5xlCH5hx5YJ9viIX8W00N3ePAXaYNXn1VogA


read = read_token(token)
print(read)  # {'some': 'data', 'inthe': 'token'}

标签:Name,证书,创建,openssl,pem,token,key,pubkey
From: https://www.cnblogs.com/weiweivip666/p/17742061.html

相关文章

  • 6.命令创建maven项目
    创建工程学写法mvnarchetype:generate    -DgroupId={project-packagingl-DartifactId={project-name}-DarchetypeArtifactId=maven-archetype-quickstart-DinteractiveMode=false创建iava工程mvnarchetype:generate -DgroupId=com.zyf-DartifactId=java-......
  • 数组动态创建问题
    数组动态创建问题C++较新版本中允许通过变量方式动态创建数组intn;cin>>n;inta[n]={0};但有些ide会提示"表达式必须含有常量值c/c++"问题,可用一下方式消除此问题intn;cin>>n;inta*=newint[n];......
  • 《DjangoApp开发》第二集,创建项目骨架、主菜单页面及跳转
    2023年10月3日这节课做的事情创建项目目录对项目进行全局时间、配置创建项目骨架,配置一堆文件写主页面切换页面项目结构。当我们发现代码很长的时候就分成多个子目录菜单界面对战界面玩家玩家的技能玩家的每一个技能玩家的移动背景时间设置界......
  • Navicat如何创建定时任务
    1、查看定时任务是否开启进入Navicat执行语句:showvariableslike'%event_scheduler%';(如下图),如果Value为“ON”说明已经开启,如果是“OFF”说明是关闭状态,执行语句:setglobalevent_scheduler=1;开启任务(event_scheduler1为NO,0为OFF)2、Navicat中创建函数,函数中写好需要处......
  • 《DjangoApp开发》第一集——配置环境及项目创建
    2023年10月2日前言今天中午、下午都出去了。晚上回来看看。上午实现了本地局域网的Linux配置。里面的Django学习内容全来自,Acwing的Django工程课。目录——实现内容Ubuntu本地局域网配置ssh配置Docker配置Acwing的镜像、用户创建项目、预览项目设置vim无法写入中文解决......
  • SQLite学习笔记——创建数据库和SELECT,INSERT语句
    SQLite创建数据库我们可以直接使用sqlite3DatabaseName.db来创建数据库,这时候我们就会发现同一目录下出现了对应的.db文件或者我们可以先启动sqlite3然后在里面使用点命令.openDatabaseName.db来创建数据库,如果已经存在对应的数据库,那么我们默认就会打开该数据库。......
  • CNVD原创漏洞证书(五)(六)
    新华三命令执行漏洞明御网关命令执行漏洞......
  • oracle教程:创建手动刷新的物化视图
    创建物化视图的语法1、物化视图概念:将视图中查询出来的数据存储到一张表中。2、优点:查询速度比视图要快。3、缺点:占用资源,并且要时时更新数据。4、创建物化视图CREATEMETERIALIZEDVIEWview_name[BUILDIMMEDIATE|BUILDDEFERRED]REFRESH[FAST|COMPLETE|FORCE][ON[CO......
  • 【Docker】镜像的创建、管理与发布
    镜像的获取镜像可以从以下方式获得:从远程镜像仓库拉取,可以是公有仓库,也可以是私有仓库从Dockerfile构建从文件导入(离线)从容器提交镜像的基本操作跟镜像相关的命令如下:$dockerimage--helpUsage:dockerimageCOMMANDManageimagesCommands:buildBuildanimage......
  • NO.8 静态库+动态库的创建(Linux环境)
    一、动态库/共享库(sharedlibrary)共享库的命名:共享库的命名一般分为三个部分:前缀:lib库名称:自己定义即可,如test后缀:.so所以最终的静态库的名字应该为:libtest.so 共享库的制作:步骤1:生成目标文件.o,此时要加编译选项:-fPIC(fpic)gcc......