Spring構成サーバーとクライアントを使用して構成プロパティを暗号化および復号化しようとしています。スプリング ブート アプリケーション (サーバーとクライアント) があり、サーバーを使用して暗号化されたパスワード プロパティがあり、クライアントで同じキーを使用して復号化しようとしていますが、エラーが発生しています。構成サーバー クライアントが構成サーバーによって最初に暗号化されたこれらのプロパティを復号化できるようにしようとしています。私が従った手順は次のとおりです。
フル機能の JCE をインストールし、JRE lib/security 内の 2 つのポリシー ファイルを置き換えます
keytool を使用して鍵を生成する
keytool -genkeypair -alias config-server-key -keyalg RSA \ -keysize 4096 -sigalg SHA512withRSA -dname "CN=*.domain.com,OU=EUS,O=eusdom,L=City,S=WA,C=US" \ -keypass keyPass -keystore config-server.jks -storepass keys3crt
クラウド セキュリティの依存関係を pom ファイルに追加しました (構成サーバーとクライアントの pom の両方にこれらを追加しました)。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-rsa</artifactId> <version>1.0.1.RELEASE</version> </dependency>
暗号化関連の構成 (構成サーバーとクライアントで使用される同じ値)
bootstrap.yml
も試してみましたapplication.yml
encrypt: key-store: location: file:///D:/encrypt-server/config-server.jks password: keyPass alias: config-server-key secret: keys3crt
私の構成サーバーのブートストラップは次のようになります
spring: application: name: config-service cloud: config: server: git: uri: https://github.com/<>/spring-config-repo encrypt: enabled: false server: port: 8888
構成サーバーを使用して passWord プロパティを暗号化する
curl -X POST --data-urlencode d3v3L \ http://localhost:8888/encrypt
構成サーバーを使用してプロパティの復号化を試みます
curl http://localhost:8888/decrypt -d <encryptedVale>
エラーを下回っています
{"timestamp":1472667297292,"status":500,"error":"Internal Server Error","exception":"java.lang.IllegalStateException","message":"Cannot decrypt","path":"/decrypt"}
構成クライアントを使用して暗号化されたプロパティを出力しようとしました (注: 3,4 に従って依存関係と暗号化キーの詳細を追加しました)
@RefreshScope @Component @RestController public class Greeter { @Value("${cassandra.hostnames}") String hostnames; @Value("${cassandra.username}") String userName; @Value("${cassandra.password}") String passWord; @RequestMapping(value = "/", produces = "application/json") public List<String> index(){ List<String> env = Arrays.asList( "userName is: " + userName, "passWord is: " + passWord, ); return env; }
}
java.lang.IllegalStateException: Cannot decrypt: key=cassandra.password
エラーが発生しています注:設定サーバーで復号化しようとしました
encrypt: enabled: false
ここで何か不足している場合はお知らせください。どんな助けにも感謝します。