2019独角兽企业重金招聘Python工程师标准>>>

生成签名证书

<?php$dn = array(  "countryName" => 'CN', //所在国家名称  "stateOrProvinceName" => 'Beijing', //所在省份名称  "localityName" => 'Beijing', //所在城市名称  "organizationName" => 'ma.alex',   //注册人姓名  "organizationalUnitName" => 'MaAlex', //组织名称  "commonName" => 'mySelf', //公共名称 "emailAddress" => 'ma.alex@qq.com' //邮箱
);
$privkeypass = '123456'; //私钥密码
$numberofdays = 365;     //有效时长
$cerpath = "./rsa_private_key.cer"; //生成证书路径
$pfxpath = "./rsa_public_key.pfx"; //密钥文件路径 //生成证书
$privkey = openssl_pkey_new(array('private_key_bits' => 512));
$csr = openssl_csr_new($dn, $privkey);
$sscert = openssl_csr_sign($csr, null, $privkey, $numberofdays);
openssl_x509_export($sscert, $csrkey); //导出证书$csrkey
openssl_pkcs12_export($sscert, $privatekey, $privkey, $privkeypass); //导出密钥$privatekey
//生成证书文件
$fp = fopen($cerpath, "w");
fwrite($fp, $csrkey);
fclose($fp);
//生成密钥文件
$fp = fopen($pfxpath, "w");
fwrite($fp, $privatekey);
fclose($fp);

类似支付宝的使用

<?php
$privkeypass = '123456'; //私钥密码
$pfxpath = "./rsa_public_key.pfx"; //密钥文件路径
$priv_key = file_get_contents($pfxpath); //获取密钥文件内容
$data = "test123"; //加密数据测试test  //私钥加密
openssl_pkcs12_read($priv_key, $certs, $privkeypass); //读取公钥、私钥
$prikeyid = $certs['pkey']; //私钥
openssl_sign($data, $signMsg, $prikeyid,OPENSSL_ALGO_SHA1); //注册生成加密信息
$signMsg = base64_encode($signMsg); //base64转码加密信息
echo "加密内容:";
print_r($signMsg);echo "\n";
//公钥解密
/*************************签名验证 只验证签名错误**********************************/
$unsignMsg=base64_decode($signMsg);//base64解码加密信息
// print_r($unsignMsg);
openssl_pkcs12_read($priv_key, $certs, $privkeypass); //读取公钥、私钥
$pubkeyid = $certs['cert']; //公钥
$res = openssl_verify($data, $unsignMsg, $pubkeyid); //验证
// echo $res; //输出验证结果,1:验证成功,0:验证失败 /*************************私钥加密,公钥解密,传输数据使用**********************************/
$pi_key = openssl_pkey_get_private($prikeyid);//这个函数可用来判断私钥是否是可用的,可用返回资源id Resource id
$pu_key = openssl_pkey_get_public($pubkeyid);//这个函数可用来判断公钥是否是可用的
// echo $pi_key;echo "<hr>";
// echo $pu_key;echo "<hr>";echo "加密内容:";
openssl_private_encrypt($data,$encrypted,$pi_key);//私钥加密
$encrypted = base64_encode($encrypted);//加密后的内容通常含有特殊字符,需要编码转换下,在网络间通过url传输时要注意base64编码是否是url安全的
echo $encrypted,"\n";  echo "解密开始:";
openssl_public_decrypt(base64_decode($encrypted),$decrypted,$pu_key);//私钥加密的内容通过公钥可用解密出来
echo $decrypted,"\n"; 

转载于:https://my.oschina.net/Alexmyj/blog/1935363

API RSA签名颁发证书相关推荐

  1. Centos7中创建RSA非对称密钥对及搭建私有CA并为客户端颁发证书

    Centos7中创建RSA非对称密钥对及搭建私有CA并为客户端颁发证书 1.在centos7中使用gpg创建RSA非对称密钥对 [13:32:55 root@centos7 data]#gpg --g ...

  2. ansible 建 kubernetes 证书签名请求_Java中的微信支付(2):API V3 微信平台证书的获取与刷新...

    1. 前言 在Java 中的微信支付(1):API V3 版本签名详解一文中胖哥讲解了微信支付 V3 版本 API 的签名,当我方(你自己的服务器)请求微信支付服务器时需要根据我方的API 证书对参数 ...

  3. 关于加密、签名、证书的作用及运用场景

    面对MD5.SHA.DES.AES.RSA等等这些名词你是否有很多问号?这些名词都是什么?还有什么公钥加密.私钥解密.私钥加签.公钥验签.这些都什么鬼?或许在你日常工作没有听说过这些名词,但是一旦你要 ...

  4. 使​​用Hashicorp Vault管理PKI并颁发证书

    使用vault搭建CA,即PKI Vault是一个加密的键值存储,旨在解决当今组织面临的许多挑战,无论是小型创业公司还是企业,它们都面临一些基本问题,其中一个是"秘密蔓延",其中意 ...

  5. 基于openssl工具完成自建CA以及为server,client颁发证书

    文章目录 一.openssl简介 1.1 主要构成部分 1.2 openssl用途 1.3 证书.密钥.CSR请求文件.CRL列表 查看命令 二.RSA密钥操作 2.1密钥生成 2.2 转换命令 2. ...

  6. openssl创建CA、申请证书及其给web服务颁发证书

    一.创建私有的CA   1)查看openssl的配置文件:/etc/pki/tls/openssl.cnf   2)创建所需的文件 touch /etc/pki/CA/index.txt   echo ...

  7. 支付宝 .NET SDK 报错:RSA签名遭遇异常,请检查私钥格式是否正确。

    AlipaySDKNet 是 .NET 平台下用于对接支付宝支付的官方 SDK.Alipay SDK for .NET 让您不用复杂编程即可访问支付宝开放平台开放的各项能力,SDK可以自动帮您满足能力 ...

  8. rhel6.3下使用openssl来生成CA证书并颁发证书实例解析

    一.配置OPENSSL [root@test1 /]# rpm -qa|grep openssl openssl-1.0.0-20.el6_2.5.i686 [root@test1 /]# cd /e ...

  9. 微信支付API v3签名与验签-APP支付问题

    目录 使用API v3微信支付遇到的问题: 1.微信请求客户端配置 2.生成预付款订单 3.拼接字符串使用API v3签名 4.微信支付成功后通知 使用API v3微信支付遇到的问题: 1.jdk版本 ...

  10. 自签名多级证书亲测可用

    rem 不能使用jdk1.7 set JAVA_HOME=E:\tools\java\jdk1.8.0_181x64 set PATH=%JAVA_HOME%\bin;%PATH% cd E:\编程技 ...

最新文章

  1. Java面向对象----封装概念
  2. 函数嵌套 lisp表达式求值
  3. 快速创建 IEqualityComparerT 和 IComparerT 的实例
  4. yunyang1994 tensorflow_yolov3训练报错:IndexError: index 68 is out of bounds for axis 1 with size 68 数据清洗
  5. percona+mysql插件_使用percona mysql插件来监控mysql5.7
  6. Java日志性能那些事
  7. 用jquery校验radio单选按钮(原创)
  8. python数据变更邮件提醒_如何使python脚本在某些数据更改时自动发送电子邮件?...
  9. 执行transact-sql语句或批处理时发生异常_DAY5-step6 Python异常处理:try, raise,except, finally...
  10. java网络编程TCP传输—流操作—拿到源后的写入动作
  11. 去年下半年blog文章导入完毕
  12. dpf linux安装db2_值得一看!数据库及Mysql入门,附详细安装教程
  13. 国内的健身房管理系统榜单-捷径系统
  14. 【转】selenium怎样定位web提示语
  15. 60 集合的交集、并集和差集运算
  16. python-docx对Word文档的指定位置(批量)插入图片
  17. 电脑怎么找到tomcat端口_查看tomcat端口号(怎么看tomcat的端口号)
  18. Placeholder_2:0 is both fed and fetched
  19. 【个人C++学习日记】
  20. bnuoj 44359 快来买肉松饼

热门文章

  1. 生成服从正态分布的随机数
  2. arcpy 实现新增字段合并字段
  3. ArcGIS 掩膜提取
  4. ftp linux 开启验证_Linux认证系统管理:linux下搭建ftp
  5. yum安装时出现:Cannot retrieve metalink for repository: epel. Please verify its path and try again
  6. 数据结构-01-链表数据结构之单链表
  7. Android Xml布局常见问题总结
  8. 基于 Flink+Iceberg 构建企业级实时数据湖
  9. 走心!15年程序员老兵的40条编程技巧,先收藏了!
  10. arcgis java api,Java中调用ArcGIS Server REST API