Histórico da Página
...
Carregando Chaves e Certificados
Se um certificado CA lhe foi enviado, ou se você gerou o seu próprio certificado sem keytool
, você precisa carregá-lo em um keystore JSSE.
Carregando Certificados com keytool
Você pode usar o keytool
para carregar um certificado no formato PEM diretamente em um keystore. O formato PEM é uma codificação de texto de certificados; é produzido pela OpenSSL, e é devolvido por alguns CAs. Um exemplo de arquivo PEM é:
jetty.crt ----- BEGIN CERTIFICATE ----- MIICSDCCAfKgAwIBAgIBADANBgkqhkiG9w0BAQQFADBUMSYwJAYDVQQKEx1Nb3J0 IEJheSBDb25zdWx0aW5nIFB0eS4gTHRkLjEOMAwGA1UECxMFSmV0dHkxGjAYBgNV BAMTEWpldHR5Lm1vcnRiYXkub3JnMB4XDTAzMDQwNjEzMTk1MFoXDTAzMDUwNjEz MTk1MFowVDEmMCQGA1UEChMdTW9ydCBCYXkgQ29uc3VsdGluZyBQdHkuIEx0ZC4x DjAMBgNVBAsTBUpldHR5MRowGAYDVQQDExFqZXR0eS5tb3J0YmF5Lm9yZzBcMA0G CSqGSIb3DQEBAQUAA0sAMEgCQQC5V4oZeVdhdhHqa9L2 / ZnKySPWUqqy81riNfAJ 7uALW0kEv / LtlG34dOOcVVt / PK8 / bU4dlolnJx1SpiMZbKsFAgMBAAGjga4wgasw HQYDVR0OBBYEFFV1gbB1XRvUx1UofmifQJS / MCYwMHwGA1UdIwR1MHOAFFV1gbB1 XRvUx1UofmifQJS / MCYwoVikVjBUMSYwJAYDVQQKEx1Nb3J0IEJheSBDb25zdWx0 aW5nIFB0eS4gTHRkLjEOMAwGA1UECxMFSmV0dHkxGjAYBgNVBAMTEWpldHR5Lm1v cnRiYXkub3JnggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQADQQA6NkaV OtXzP4ayzBcgK / qSCmF44jdcARmrXhiXUcXzjxsLjSJeYPJojhUdC2LQKy + p4ki8 Rcz6oCRvCGCe5kDB ----- END CERTIFICATE -----
O comando a seguir carrega um certificado codificado PEM no jetty.crt
arquivo em um armazenamento de chaves JSSE:
$ keytool -keystore keystore -import -alias jetty -file jetty.crt -trustcacerts
Se o certificado que você recebe do CA não está em um formato que keytool
entende, você pode usar o openssl
comando para converter formatos:
$ openssl x509 -in jetty.der -inform DER -outform PEM -out jetty.crt
----------------------------------------------------------------------------------------------------------
Configurando SslContextFactory
Os certificados SSL gerados detidos no armazenamento de chaves são configuradas no Jetty por injecção uma instância de SslContextFactoryobjeto e passá-la para SslConnectionFactory do conector, o que é feito na distribuição molhe por ambos em molhe-https.xml e molhe-spdy.xml . Desde SPDY é capaz de lidar com HTTPS também, normalmente você vai configurar píer para usar um desses arquivos de configuração ou o outro, o que pode ser feito outro na linha de comando ou editando o arquivo start.ini.
Esses arquivos de configuração criar uma instância SslContextFactory com o ID "sslContextFactory":
1 2 3 4 5 6 7 | < New id = "sslContextFactory" class = "org.eclipse.jetty.util.ssl.SslContextFactory" > < Set name = "KeyStorePath" >< Property name = "jetty.home" default = "." />/etc/keystore</ Set > < Set name = "KeyStorePassword" >OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4</ Set > < Set name = "KeyManagerPassword" >OBF:1u2u1wml1z7s1z7a1wnl1u2g</ Set > < Set name = "TrustStorePath" >< Property name = "jetty.home" default = "." />/etc/keystore</ Set > < Set name = "TrustStorePassword" >OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4</ Set > </ New > |
Este exemplo usa o armazenamento de chaves distribuídas com molhe. Para usar seu próprio armazenamento de chaves que você precisa atualizar, pelo menos, as seguintes definições:
KeyStorePathVocê pode substituir o armazenamento de chave fornecida com o seu próprio, ou alterar a configuração para apontar para um arquivo diferente. Note-se que como um armazenamento de chaves é segurança da informação vital, pode ser desejável para localizar o arquivo em um diretório com um acesso muito restrito.KeyStorePasswordA senha de armazenamento de chaves pode ser definido aqui em texto simples, ou como alguma proteção contra observação casual, ela pode ser ofuscado usando a senha de classe.
O Truststore é usado se validar os certificados de cliente e é normalmente definido para o mesmo armazenamento de chaves.
O keyManagerPassword é passado como a senha para arg KeyManagerFactory.init (...). Se não houver nenhum keymanagerpassword, em seguida, o keyStorePassword é usado em vez disso. Se não existe um conjunto TrustManager, então o armazenamento de chaves é usado como o armazenamento de confiança eo keyStorePassword é usado como senha truststore
Não há necessidade de criar uma nova instância de SslContextFactory usando o xml acima como um existe no molhe-ssl.xml. Edite os caminhos e senhas no molhe-ssl.xml e garantir que você adicionar as seguintes linhas para start.ini após a jetty.dump.stop line =:
1 2 | etc/jetty-ssl.xml etc/jetty-https.xml |
Opcionalmente, configure a porta https ou em molhe-https.xml como este:
1 | < Set name = "port" >8443</ Set > |
ou via linha de comando, por exemplo
$ java -jar start.jar https.port=8443