zoukankan      html  css  js  c++  java
  • JHipster技术栈定制

    本文说明了如何开启和使用JHipster-Registry的加解密功能。

    1 整体规划

    1.1 名词说明

    名词 说明 备注
    对称加密 最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。 直接在bootstrap.yml文件中设置好key
    非对称加密 非对称加密使用了一对密钥,公钥(public key)和私钥(private key)。私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。 需要通过keytool工具生成密钥对,并放置在Jhipster-Registry的类路径下。

    1.2 相关组件

    组件名 说明 版本
    Jhipster-Registry 基于eureka和spring cloud config的基础服务。 v3.2.4
    myClient 一个客户端服务,用于测试加解密效果。 1.0
    GitLab配置库 Jhipster-Registry引用的GitLab仓库。所有的配置文件所在地。

    2 JhipsterRegistry设置

    2.1 对称加密设置

    a) 修改bootstrap.yml
    spring:
        cloud:
            config:
                server:
                    encrypt:
                        enabled: true   # 开启加解密endpoint
     
    # 设置对称密钥
    encrypt:
        key: changeit
    
    b) 构建并重新启动JhipsterRegistry服务

    2.2 非对称加密设置

    a) 生成密钥对
    $ keytool -genkeypair -alias configkey -keyalg 
      RSA -dname  "C=CN,ST=GD,L=GZ,O=YOURCOMPANY,OU=YOURCOMPANY,CN=registry" 
      -keypass changeit1 -storepass changeit2 -keystore config-server.jks
    
    b) 将config-server.jks放到jhipster-registry的src/main/resources目录下
    c) 修改bootstrap.yml
    spring:
        cloud:
            config:
                server:
                    encrypt:
                        enabled: true     # 开启加解密endpoint
    
    encrypt:
        keyStore:                  # 非对称加密
            location: classpath:/config-server.jks   # jks文件的路径
            password: changeit2                  # storepass,和生成密钥时的参数值保持一致
            alias: configkey                          # alias,和生成密钥时的参数值保持一致
            secret: changeit1                       # keypass,和生成密钥时的参数值保持一致
    
    d) 构建并重新启动JhipsterRegistry服务

    3 测试效果

    3.1 使用加解密功能

    a) 通过UI使用加解密功能

    http://yourdomain:8761/#/encryption

    b) 通过命令行使用加解密功能
    $ curl yourdomain:8761/encrypt -d <要加密的明文>
    $ curl yourdomain:8761/decrypt -d <想要解密的密文>
    

    3.2 加密应用的配置信息

    a) 加密myClient的数据库密码的明文信息
    $ curl yourdomain:8761/encrypt -d my-secret-pw
    
    b) 获得数据库密码的密文信息
    {cipher}188e937623c258e8ca180b798………………………a4eb20ff5ff3568cf
    
    c) 保存密文到myClient的application-prod.yml
    spring:
        datasource:
            username: root
            password: '{cipher}188e937623c258e8ca180b798………………………a4eb20ff5ff3568cf'   
    # 注意yml文件中密文要放在单引号中
    
    d) 上传application-prod.yml到GitLab仓库
    e) 通过jhipster-registry的管理页面查看配置属性password,验证值是否已经解密:

    http://yourdomain:8761/#/config

    f) 重启myClient,验证是否正确获取password的值并连接到mysql数据库。
  • 相关阅读:
    PAT (Basic Level) Practise 1013 数素数
    PAT (Basic Level) Practise 1014 福尔摩斯的约会
    codeforces 814B.An express train to reveries 解题报告
    KMP算法
    rsync工具
    codeforces 777C.Alyona and Spreadsheet 解题报告
    codeforces 798C.Mike and gcd problem 解题报告
    nginx + tomcat多实例
    MongoDB副本集
    指针的艺术(转载)
  • 原文地址:https://www.cnblogs.com/yorkwu/p/9971120.html
Copyright © 2011-2022 走看看