A Spring Cloud fornece aos desenvolvedores uma variedade de ferramentas para criar rapidamente modelos comuns de sistemas distribuídos. Por exemplo: Gerenciamento de configuração, descoberta de serviços, desativação, roteamento inteligente, micro-agentes, ônibus de controle, tokens únicos, bloqueios globais, campanhas de tomada de decisão, sessões distribuídas, status de cluster etc. A assistência de sistemas distribuídos requer um grande número de modelos e os desenvolvedores que usam nuvens de mola podem estabelecer rapidamente serviços e aplicações que suportam padrões. Eles serão adequados para qualquer ambiente distribuído, seja um ambiente pessoal ou um ambiente de produção de um desenvolvedor ou uma plataforma em nuvem.
característica
A Spring Cloud se concentra em fornecer soluções típicas e maneiras escaláveis que estão prontas para uso.
Introdução
A criptografia assimétrica da RSA tem uma segurança muito forte. A criptografia SSL HTTPS usa esse método para criptografar e transmitir solicitações HTTPS. Como o algoritmo RSA envolve a chave privada e a chave pública para criptografia e descriptografia, é chamado de criptografia assimétrica. A chave privada e a chave pública são interoperáveis, ou seja, aqueles criptografados com chave privada podem ser descriptografados com a chave pública, e os criptografados com chave pública podem ser descriptografados com chave privada. A autenticação unidirecional tradicional usa apenas a chave pública para criptografia, e apenas aqueles com a chave privada podem descriptografar. Por exemplo, um servidor da Web terá um par de chaves privadas e chaves públicas. O cliente do navegador salva a chave pública do servidor. Quando o cliente precisa enviar dados para o servidor, ele usa a chave pública do servidor para criptografá -lo. Então, quando o servidor recebe os dados, ele usa a chave privada para descriptografá -lo. Quando o cliente verificar se o servidor é um servidor real, ele comparará a chave pública fornecida pelo servidor com a tecla pública salva localmente. Somente se for consistente, a autenticidade do servidor pode ser verificada.
Em nosso servidor de configuração, alguns dos dados que possuem altos requisitos de criptografia podem ser criptografados e descriptografados usando o algoritmo RSA.
Código fonte do projeto
Nuvem de código gitee
Gerar testes de teste
Precisamos usar a ferramenta KeyTool que vem com o JDK para gerar um keystore, que salva as informações de chave privada, e usar a seguinte linha de comando:
keytool -GenKeypair -Alias Config -server -key -Keyalg rsa -dname "cn = servidor de configuração, ou = xuqian, o = minha própria empresa, l = Pequim, s = Pequim, c = cn" -KeyPass Changeit
-Keystore Server.JKS -Storepass Changeit
O parâmetro -genKeypair gera um par de chaves públicas e chaves privadas.
-Alias especifica o alias da chave, que é usada para distinguir diferentes teclas na mesma tecla.
-Keyalg Especifica o algoritmo para gerar chaves, e o RSA padrão é usado aqui
-DName Especifica o nome comum, ou seja, CN, para verificar a identidade da chave. Todos os itens são parâmetros personalizados, ou é o nome da unidade, O é o nome da organização, L é a cidade, S é a província/estado e C é o país
-KeyPass é a senha para a chave
-Keystore é o nome do arquivo da keystore
-storepass Senha para acessar o keystore
A ferramenta acima salva a chave privada gerada em um armazenamento de chave chamado Server.jks. Até agora, geramos apenas chaves privadas. O Spring Cloud Config Server gerará uma chave pública usando o programa cada vez com base nas principais informações que fornecemos. Consulte o código -fonte abaixo.
org.springframework.security.rsa.crypto.keystoreKeyFactory:
public Keypair getKeypair (alias de string, char [] senha) {Try {Synchronized (Lock) {if (store == null) {Synchronized (Lock) {// Obtenha o objeto de instância do keystore com base no endereço do arquivo keystore e na senha fornecida pela configuração = keystore.getInstance ("jks"); store.load (Resource.getInputStream (), this.password); }}} // Obtenha a chave privada da keystore com base no alias e senha fornecida pela configuração rsaprivatecrtkey key = (rsaprivatecrtkey) store.getKey (alias, senha); // define regras públicas de geração de chaves rsapublickeyspec spec = novo rsapublicKeyspec (key.getModulus (), key.getpublicexponent ()); // gerar chave pública pública PublicKey = keyfactory.getInstance ("RSA"). GeneratePublic (SPEC); devolver o New Keypair (PublicKey, chave); } catch (Exceção e) {lança new ilegalStateException ("Não é possível carregar as teclas da loja:" + recurso, e); }}A API de segurança Java é usada aqui para operar na chave. Veja Notas. Em seguida, as informações acima são fornecidas através do arquivo de configuração do bootstrap.xml no ConfigServer:
Encrypt: #Key: ThisisSySyCretKey Keys.
Como não podemos usar a criptografia simétrica e a criptografia assimétrica, comentamos a configuração do Encrypt.Key e especificamos os parâmetros para a criptografia assimétrica:
teste
Continuamos a criptografar um teste de teste usando a API Encrypt:
Curl http: // localhost: 8888/Encrypt -d 23456789
Retorna os personagens criptografados:
AqapwouoH4WVEXGGVV+BGTKC5E0D5ABA8VUKNZEXH27HYKSABW+wyzdwztbk5qyfxpocas413rdenidr2ez44nkjt5v+438/ Vqexyszjzphp0xyxi9yiajqa3+ji+iwk8hrgtj4dzxikmitimcoirldzzzgdm/yklmuvh7larsnumxxgklpdbpkywdqhm57ob 6SB0IVM4H4ML1N4D3QUE7HH2F4AW4OLN7XUEYMKRPTTPY8OPNBEEZHRFMAL/AUVZQULU5JJMNJK9JIWoy+dstscviy/mz+d ypv6f4afddvvog89snmpzcut+zmb8jxhdjloky+63rg326wffy9OPUIMW6/kcwzhv6vws55hhqry713w6ydblrq/gyc3wils =
Em seguida, teste a descriptografia
Curl http: // localhost: 8888/descriptografar -d Aqapwouoh4+bgtkc5e0d5aba8vuknzexh27hyksabw+wyzdwztbk5qyfxpocas413rdenidr2ez44kjt5v+438/vqexys zjzphp0xyxi9yiajqa3+ji+iwk8hrgtj4dzxikmitimcoirldzzzgdm/yklmuvh7larsnumxxgklpdbpkywdqhm57ob6sb0 IVM4H4ML1N4D3QUE7HH2F4AW4OLN7XUEYMKRPTTPY8OPNBEEZHRFMAL/AUVZQULU5JJMNJK9JIWOY+dstscviy/mz+dyp v6f4afddvvog89snmpzcut+zmb8jxhdjloky+63rg326wffy9opimw6/kcwzhv6vws55hhqry713w6ydblrq/gyc3wils =
Voltará
23456789
Também podemos modificar o web-client.yml para verificar:
#test: #password: '{cipher} 94c1027141add9844ec47f0be13caebb6b38ed1dcf99811b1a5cd2b874c64407'User: senha: senha: '{cipher} aqapwouoh4wvexggvv+bgtkc5e0d5aba8vuknzexh27hyksabw+wyzdwztbk5qyfxpocas413rdenidr2ez4kjt5 V+438/vqexyszjzphp0xyxi9yiajqa3+ji+iwk8hrgtj4dzxikmitimcoirldzzzgdm/yklmuvh7larsnumxxgklpdbpkywdqhm 57OB6SB0IVM4H4ML1N4D3QUE7HH2F4AW4OLN7XUEYMKRPTTPY8OPNBEEZHRFMAL/AUVZQULU5JJMNJK9JIWOY+dstscviy/mz +dypv6f4afddvvog89snmpzcut+zmb8jxhdjloky+63rg326wffy9OPUIMW6/kcwzhv6vws55hhqry713w6ydblrq/gyc3wils = ''Comente o test.password e adicione um novo user.password para usar o valor de configuração criptografada. Em seguida, envie o repositório Gitee e acesse este arquivo de configuração através do URL:
http: // localhost: 8888/web-client/padrão
Os seguintes resultados são obtidos:
{"Nome": "Web-Client", "Perfis": ["padrão"], "Label": NULL, "Version": "3044A5345FB86D09A043CA7404B9E57C8C13C512," Estado ": Null," PropertySourceces: [{" "https://gitee.com/zxuqian/spring-cloud-config-remote/web-client.yml", "origem": {"message": "Esta mensagem vem da configuração remota REPOSITEM": "USER.ENDPONDS.WEB.EXOSFUST.INCLUDE" "" "" "", "".Resumir
O exposto acima é a introdução do Spring Cloud Config RSA e o método de usar o RSA para criptografar arquivos de configuração que o editor apresentou a você. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!