证书生成(keystore、truststore、crt、key)

1.说明

        keystore和truststore通过jdk的keytool生成即可;.crt和.key生成需要使用openssl。

2.生成keystore

keytool -genkeypair -alias certificatekey -keyalg RSA -validity 365 -keystore tomcat.keystore

        输入2次自定义密钥库口令123456,记住该口令

        在OpenSSL的bin里面找到tomcat.keystore

3.导出公钥证书cer

keytool -export -alias certificatekey -keystore tomcat.keystore -rfc -file tomcat.cer

        执行命令,输入前面自定义的密钥库口令123456 


4.生成truststore

Keytool -import -alias certificatekey -file tomcat.cer -keystore tomcat.truststore

5.keystore转换为p12

keytool -importkeystore -srckeystore tomcat.keystore -destkeystore tomcat.p12 -deststoretype PKCS12

6.使用openssl生成.crt

        openssl下载路径:

Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions

/index.html

OpenSSL-Win32-桌面系统文档类资源-CSDN下载(win10以下)

下载OpenSSL-Win32.rar,解压到c盘,进入到bin路径下;将第5步生成的tomcat.p12文件复制到这个路径下。

        执行下面命令,生成tomcat.crt。

openssl pkcs12 -in tomcat.p12 -nokeys -out tomcat.crt

7.使用openssl生成.key

openssl pkcs12 -in tomcat.p12 -nocerts -nodes -out tomcat.key

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
public SSLContext loadTwoWayTrust(RestSystemConfigDto restSystemConfigDto) { SSLContext sslContext = null; String keyStoreFile = restSystemConfigDto.getKeyStoreFile(); String keyPass = restSystemConfigDto.getKeyStorePass(); String trustKeyStoreFile = restSystemConfigDto.getTrustStoreFile(); String trustKeyPass = restSystemConfigDto.getTrustStorePass(); String keystoreType = restSystemConfigDto.getKeyStoreType(); // 判断是否正确配置keystore以及trust keystore信息 if (StringUtil.isNotEmpty(keyStoreFile) && StringUtil.isNotEmpty(keyPass) && StringUtil.isNotEmpty( trustKeyStoreFile) && StringUtil.isNotEmpty(trustKeyPass)) { FileInputStream trustIns = null; FileInputStream keyStoreIns = null; try { KeyStore trustStore = KeyStore.getInstance(keystoreType); KeyStore keyStore = KeyStore.getInstance(keystoreType); trustIns = new FileInputStream(trustKeyStoreFile); keyStoreIns = new FileInputStream(keyStoreFile); trustStore.load(trustIns, trustKeyPass.toCharArray()); keyStore.load(keyStoreIns, keyPass.toCharArray()); sslContext = SSLContexts.custom().loadKeyMaterial(keyStore, keyPass.toCharArray()) .loadTrustMaterial(trustStore, new TrustSelfSignedStrategy()).build(); } catch (Exception ex) { logger.debug("load keystore or trust keystore file failure.", ex); sslContext = loadAllTrust(); } finally { try { if (trustIns != null) { trustIns.close(); } if (keyStoreIns != null) { keyStoreIns.close(); } } catch (IOException e) { logger.warn("Close KeyStore Stream Failed", e); } } } else { logger.debug("not found keystore or trust keystore."); sslContext = loadAllTrust(); } return sslContext; }
06-13
+ (1 - p) * option_price[j + 1, i + 1]) # 计算Vega d_sigma这段代码存在资源未关闭的风险,需要修改来避免`OBL_UNSATISFIED_OBLIGATION_EXCEPTION_EDGE = 0.01 sigma_up = sigma + d_sigma option_price_up = calculate_delta(S, K, r, sigma`警告。 修改后的代码如下: ```java public SSLContext loadTwoWayTrust(RestSystemConfigDto restSystemConfigDto) { SSLContext sslContext = null; String keyStoreFile = restSystemConfigDto.getKeyStoreFile(); _up, T, N)[1] vega = (option_price_up - option_price[0, 0]) / d_sigma String keyPass = restSystemConfigDto.getKeyStorePass(); String trustKeyStoreFile = restSystemConfigDto.getTrustStoreFile(); return vega # 输入期权参数并计算Delta、Gamma和Vega S = 100 K = 100 String trustKeyPass = restSystemConfigDto.getTrustStorePass(); String keystoreType = restSystemConfigDto.getKeyStore r = 0.05 sigma = 0.2 T = 1 N = 100 delta = calculate_deltaType(); // 判断是否正确配置keystore以及trust keystore信息 if (StringUtil.isNotEmpty(keyStoreFile) && StringUtil.isNotEmpty(keyPass) && StringUtil.isNotEmpty( trustKeyStoreFile) && StringUtil.isNotEmpty(trustKeyPass)) { try ((S, K, r, sigma, T, N)[0] gamma = calculate_gamma(S, K, r, sigma, T, NFileInputStream trustIns = new FileInputStream(trustKeyStoreFile); FileInputStream keyStoreIns = new FileInputStream(keyStoreFile)) { KeyStore trustStore = KeyStore.getInstance(keystoreType); KeyStore keyStore = KeyStore.getInstance(keystoreType); ) vega = calculate_vega(S, K, r, sigma, T, N) # 输出结果 print("Delta: {:.4 trustStore.load(trustIns, trustKeyPass.toCharArray()); keyStore.load(keyStoreIns, keyPass.toCharArray()); f}".format(delta)) print("Gamma: {:.4f}".format(gamma)) print("Vega: {:.4f}".format(ve sslContext = SSLContexts.custom().loadKeyMaterial(keyStore, keyPass.toCharArray()) .loadTrustMaterial(trustStore,ga)) ``` 在上面的代码中,我们定义了三个函数分别计算Delta、Gamma和Vega。这 new TrustSelfSignedStrategy()).build(); } catch (Exception ex) { logger.debug("load keystore or trust keystore file failure.", ex); sslContext = loadAllTrust(); } } else { 些函数的实现基于二叉树模型,使用递归的方式来计算股票价格和期权价格,并 logger.debug("not found keystore or trust keystore."); sslContext = loadAllTrust(); } return ssl根据价格变化计算希腊字母。最后,我们输入期权参数并调用这些函数来计算Context; } ``` 在修改后的代码中,我们使用了`try-with-resources`语句块来声明和初始化`Delta、Gamma和Vega,并输出结果。 需要注意的是,二叉树模型的精度取决于节点数NFileInputStream`,从而避免了资源未关闭的风险。同时,我们也删除了`finally`语句块,因为`try-with-resources`会自动关闭资源,不需要手动关闭。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kenick

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值