keytool 自签spring boot 证书和ngnix证书

最近处理问题需要本地搭建https的请求,所以查了很多资料,把自己理解写下来

 CA证书 是把 网站的公钥,网站域名,等等信息 的签名进行非对称加密,又权威的机构进行认证颁发。非对称加密有公私钥,公钥加密,只能私钥解密。网站保密自己的私钥,公钥放在CA证书发给用户

https 请求客户端验证根证书获得公钥,然后把一串字符串通过公钥加密传给服务器,服务解密获取字符串,字符串用于加盐,双方约定加密方式进行对称加密传输报文(这是简单说法,感兴趣自己查资料或者抓报文自己研究)

springboot配置https

开始本地证书,网上有两种方式keytool和openssl,openssl需要自己搭环境,本人用java,所以用JDK自带的keytool

ctrl+R cmd进入控制台,如果配置了jdk环境变量直接输入keytool,没有按照就cd 进入jdk的bin目录如图

开始用-genkeypair命定生成密钥对 ,不会可以使用keytool -genkeypair -help,中文提示

keytool -genkeypair -alias asso -keyalg RSA -keysize 2048 -keypass 123456 -validity 3650 -keystore C:\opt\asso.jks

有中文提示,这个生成密钥对,放在 -keystore 是密钥库

回车需要输入省市公司等信息,输入完毕确认 y 就可以了

把你刚刚生成文件放到项目下,然后加入配置

server.ssl.key-store=classpath:asso.jks
server.ssl.key-alias=asso
server.ssl.key-store-password=123456
server.ssl.key-password=123456

springboot 本地https配置完毕

nginx配置https

nginx需要把刚刚的密钥对 用keytool 转换下crt格式:

keytool -exportcert -alias asso -keystore C:\opt\asso.jks -storepass 123456 -rfc -file C:\opt\
asso.crt

用java代码base64的方式打印出私钥

public static PrivateKey getPrivateKey() {
  try {
    BASE64Encoder encoder = new BASE64Encoder();
    KeyStore ks = getKeyStore("C:\\opt\\asso.jks", "123456");
    PrivateKey key = (PrivateKey) ks.getKey("asso", "123456".toCharArray());
    String encoded = encoder.encode(key.getEncoded());
    System.out.println("-----BEGIN RSA PRIVATE KEY-----");
    System.out.println(encoded);
    System.out.println("-----END RSA PRIVATE KEY-----");
    return key;
  } catch (Exception e) {
    return null;
  }
}

public static KeyStore getKeyStore(String keyStorePath, String password) throws Exception {
  FileInputStream is = new FileInputStream(keyStorePath);
  KeyStore ks = KeyStore.getInstance("JKS");
  ks.load(is, password.toCharArray());
  is.close();
  return ks;
}
public static void main(String[] args) {
  getPrivateKey();
}

自己建一个文件夹保存私钥

修改ngnix的 *.conf文件server配置,启动

2.可以使用keytool打印出key私钥

keytool -printcert -file C:\opt\asso.crt -rfc

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值