jdk自带keytool生成证书

spring boot使用jdk生成的自签名TLS/SSL 此种证书是在内网模式使用的一种安全认证的证书,如果想使用外放方式,需要去aliyun申请证书。下面是生成方式与步骤。 阅读详情

 1、进入jdk安装目录:cd C:\Program Files\Java\jdk1.8.0_291

2、执行命令:

keytool -genkeypair -alias jwt -keyalg RSA -keypass 123456 -keystore f:\black\jwt.jks -storepass 123456

3、备份

keytool -importkeystore -srckeystore f:\black\jwt.jks -destkeystore f:\black\jwt.jks -deststoretype pkcs12

4、 查询证书

keytool -list -keystore f:\black\jwt.jks

5、获取公钥:public key

keytool -list -rfc --keystore f:/black/jwt.jks | openssl x509 -inform pem -pubkey

 6、编写测试类

package com.senge.ali.auth.util;

import cn.hutool.json.JSONUtil;
import com.google.common.collect.Maps;
import org.springframework.core.io.ClassPathResource;
import org.springframework.security.jwt.Jwt;
import org.springframework.security.jwt.JwtHelper;
import org.springframework.security.jwt.crypto.sign.RsaSigner;
import org.springframework.security.jwt.crypto.sign.RsaVerifier;
import org.springframework.security.rsa.crypto.KeyStoreKeyFactory;

import java.security.KeyPair;
import java.security.interfaces.RSAPrivateKey;
import java.util.Map;

public class JwtTest {

    /**
     * 获取token
     * @throws Exception
     */
    public static String testCreateJwt() throws Exception {
        // 1、创建秘钥工厂
        KeyStoreKeyFactory keyStoreKeyFactory = new KeyStoreKeyFactory(
                // 秘钥位置
                new ClassPathResource("jwt.jks"),
                // 秘钥库密码
                "123456".toCharArray()
        );
        // 2、基于工厂拿到私钥
        KeyPair keyPair = keyStoreKeyFactory.getKeyPair("jwt", "123456".toCharArray());

        // 转化为rsa私钥
        RSAPrivateKey rsaPrivateKey = (RSAPrivateKey) keyPair.getPrivate();

        // 3、生成jwt
        Map<String, String> map = Maps.newHashMap();
        map.put("username", "senge");
        map.put("password", "123456");
        Jwt jwt = JwtHelper.encode(JSONUtil.toJsonStr(map), new RsaSigner(rsaPrivateKey));
        String jwtEncoded = jwt.getEncoded();
        System.out.println("jwtEncoded:" + jwtEncoded);
        String claims = jwt.getClaims();
        System.out.println("claims:" + claims);
        return jwtEncoded;
    }

    /**
     * 解析token
     * @throws Exception
     */
    public static void testParseJwt(String jwtToken) throws Exception {
        // 基于公钥去解析jwt
        String publicKey = "-----BEGIN PUBLIC KEY-----\n" +
                "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgRV9PliWWPM8vBm9WG/X\n" +
                "w2IikbtLsYGYBmAu366cP5FsJzo9USWnCx3lwk9oEgmT6KBNRZj54WZAWX7QJivD\n" +
                "ohjxiNghj5rBFH9tOVEoGS/wQK5tu9rEbAGwZdy8BtOYdKk6c0uarP6uEnLxEkWy\n" +
                "evRkX3Ph4Lqb8XBTqxWbIKm0etiCjSfznz46+1fpIVDN//3R6TYs1RxlyiznIJ+l\n" +
                "zFEj3VFTvTcDyaFw2KYHLQ9MmqSv52SldIf2VO8jdoQ3J7cc7Vv3AKiHCXh2dqBV\n" +
                "WkBFSqddEh/Hi9uD2M/qyTLUtwV8sjoFk0Xu0q5i8ALMqdwVBEfLrNnvv+VS/9y+\n" +
                "jwIDAQAB\n" +
                "-----END PUBLIC KEY-----";
        // 解析令牌
        Jwt token = JwtHelper.decodeAndVerify(jwtToken, new RsaVerifier(publicKey));
        // 获取负载
        String claims = token.getClaims();
        System.out.println(claims);
    }

    public static void main(String[] args) throws Exception {
        String token = testCreateJwt();
        testParseJwt(token);
    }

}

SpringCloud(15) JWT生成密钥证书jwt.jks SpringCloud JWT Keytool生成密钥证书jwt.jks & 获取jks文件的公钥 阅读详情

相关推荐

使用JDK自带keytool 工具生成公私钥证书

1、生成JKS密钥库,并查看证书 1.1、生成keystore文件 E:\license> keytool -genkeypair -keysize 2048 -validity 36500 -alias "privateKey" -keyalg "RSA" -keystore "privateKeys.keystore" -storepass "Zhld2021@!" -keypass "Zhld2021@!" -dname "CN=localhost, OU=localhost, O=loc

wumi0002的博客 2506

keytool 错误: java.io.FileNotFoundException: cacerts (拒绝访问。)

文章目录项目场景问题描述原因分析解决方案参考文档 项目场景 我想要将阿里云的maven中央仓库证书导入到 JRE security 中。 问题描述 C:\Program Files\Java\jdk1.8.0_241\jre\lib\security>keytool -import -alias aliyun-maven -keystore cacerts -file E:\entSoftware\aliyun-maven.cer 输入密钥库口令: …………一堆证书内容信息 是否信任此证书? [

本海的窝 1万+

JDK自带工具keytool生成ssl证书

前言: 因为公司项目客户要求使用HTTPS的方式来保证数据的安全,所以木有办法研究了下怎么生成ssl证书来使用https以保证数据安全。 百度了不少资料,看到JAVA的JDK自带生成SSL证书的工具:keytool,外加看了同事的心得体会,自己总结了一下具体的使用方法和使用过程中发现的问题及解决办法。 1:什么是HTTPSHTTPS其实是有两部分组成:HTTP+SSL/TLS, 也就是在HTTP上又加了一层处理加密信息的模块,并且会进行身份的验证。 问题: Firebug和p...

Mrs_haining的博客 3527

使用JDK生成HTTPS证书

首先我们需要有一个 https 证书,我们可以从各个云服务厂商处申请一个免费的,不过自己做实验没有必要这么麻烦,我们可以直接借助 Java 自带JDK 管理工具 keytool生成一个免费的 https 证书。进入到目录下,执行如下命令生成一个数字证书。# 指令解释genkey: 表示要创建一个新的密钥alias: 表示keystore的别名keyalg: 表示使用的加密算法是RSA,一种非对称加密算法keysize: 表示密钥的长度keystore: 表示生成的密钥存放位置。

仰望星空,脚踏实地!安全感是自己给的,努力才是一辈子的安全感。 2432

使用JDK自带keytool生成证书

Java keytool 的介绍 keytool 命令介绍 keytool 的使用

kunlyy的专栏 1万+

JDK 自带 keytool 生成免费证书

JDK 自带 keytool 生成免费证书1. keytool 生成证书keytool -genkey 参数说明示例2. 查看证书keytool -list 参数说明示例1. 详细输出2. 以 RFC 样式输出3. keytool 其它功能keytool -help 说明 1. keytool 生成证书 keytool -genkey 参数说明 D:\JDK8_64\bin>keytool -genkey -help keytool -genkeypair [OPTION]... 生成密钥对 选项

灵台方寸山斜月三星洞 1303

使用JDK自带工具keytool生成ssl证书

使用JDK自带工具keytool生成ssl证书 HTTPS简介 超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP Secure)是一种网络安全传输协议。具体介绍以前先来介绍一下以前常见的HTTP,HTTP就是我们平时浏览网页时候使用的一种协议。HTTP协...

seeker的博客 6万+

【java证书JDK自带工具keytool生成ssl证书

JDK自带工具keytool生成ssl证书 前言: 因为公司项目客户要求使用HTTPS的方式来保证数据的安全,所以木有办法研究了下怎么生成ssl证书来使用https以保证数据安全。 百度了不少资料,看到JAVA的JDK自带生成SSL证书的工具:keytool,外加看了同事的心得体会,自己总结了一下具体的使用方法和使用过程中发现的问题及解决办法。 1:什么是HTTPS? HTT...

u011191463的专栏 967

使用 JDK自带工具 keytool生成数字证书

使用 JDK自带工具 keytool生成数字证书生成非对称密钥从文件 test.keystore导出证书 >> test.crt常用参数 生成非对称密钥 ./keytool -genkeypair -v -alias test -dname “CN=test,OU=Wenyao,O=R&D,L=Yangpu,ST=Shanghai,C=China” -keyalg RSA -...

Shawn Jeon`s blog 893

使用JDK自带keytool工具生成证书

使用JDK自带keytool工具生成证书 1.  使用JDK自带keytool工具生成证书keytool -genkey-alias wsria -keyalg RSA -keystore d:/keys/wsriakey  导出证书 keytool -export -filed:/keys/wsria.crt -alias wsria -keystore d:

gaosilingqwer的博客 1329
上一篇: windows+docker+nginx安装
下一篇: vmware安装linux
I.T10001
博客等级 码龄14年 13粉丝 · 308原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值