Encriptação TLS para o cliente / servidor comunicação IPv6 / IPv4

O que é ucspi-SSL?

sslserver , sslclient e sslhandle são ferramentas de linha de comando para a construção de aplicações cliente-servidor SSL. Eles estão em conformidade com o UNIX cliente-servidor interface do programa, UCSPI .

sslserver escuta para conexões IPv4 IPv6 e / ou e executa um programa para cada conexão aceita. O ambiente programa inclui variáveis que contêm os nomes de host locais e remotos, endereços IP e números de porta. sslserver oferece um limite de simultaneidade na aceitação de novas conexões, e manipulação selectiva de ligações com base na identidade do cliente apoiar CIDR notação endereço IP. sslserver suporta STARTTLS e STLS .

sslclient solicita uma conexão a tomadas tanto uma IPv6 ou IPv4 TCP, e executa um programa. O ambiente do programa inclui as mesmas variáveis como, por sslserver .

Fontes

História

ucspi-ssl 0,9x é um fork do do sobrescrito versão ucspi-ssl 0,70, incluindo

  • Scott Gifford 's STARTTLS extensões,
  • Certificado encadeamento apoio,
  • SubAltName reconhecimento para verificação FQDN, e

  • CIDR apoio à CDB para filtrar conexões IPv4 / IPv6.
  • IPv6 melhorias são tomadas principalmente a partir de Felix von Leitner . 
    Nota : Devido ao suporte IPv6, os argumentos de linha de comando para os respectivos programas são ligeiramente alteradas.
  • ucspi-ssl 0,93 é simplificado com ucspi-tls6 1,00
  • ucspi-ssl 0,94 prevê sslserver um cliente (usuário) apoio X.509 cert estendida.
  • ucspi-ssl 0.95 permite sslserver para registrar o protocolo SSL e configurações de codificação por meio de opção -V : 
    @4000000054b2cd36310b0fb4 sslserver: ssl 20791 accept TLSv1:AES128-SHA
    Enquanto SSL negociação está desativado por padrão (evitar Poodle bug), TLSv1 pode ser comutada off antes da compilação de modificar o arquivo ucspissl.h .
  • ucspi-ssl-0.95b detecta automaticamente o ambiente AMD64 e, além disso o suporte para bibliotecas de carga dinâmica , conforme exigido por alguns sistemas Linux.
  • ucspi-ssl-0.96 corrige um problema para sslserver 's paranóico avaliação de endereços IPv4 no caso de um DNS AAAA , além de uma Um existe registro.
  • ucspi-ssl-0.97 agora inclui o ECDH Elliptic Curve aperto de mão. 
    Ela corrige um potencial segfault erro na avaliação de endereço CIDR IP e se livrar da maioria dos avisos do compilador. Graças ao Frank Bergmann e Troy para essas melhorias.
  •  ucspi-ssl-0.98 agora suporta LibreSSL API 's e fixa um longo tempo (pesquisa) problema de recursos (tx. novamente Frank Bergmann). 
    Versão 0.98b está em conformidade com pacote do Gentoo requisitos de construção.

ucspi-SSL 0.9 fornece uma interface de programação de alto nível para OpenSSL e LibreSSL que é obrigatório para conseguir apoio para TLS

Isto é facilitaram por meio da lib ucspissl.a (após a compilação; localizado na ./compile ) e o arquivo de cabeçalho ucspissl.h .

Como instalar ucspi-ssl

ucspi-SSL utiliza do DJ Bernstein / Pacote convenções para a instalação. Normalmente, descompactar o arquivo sob / pacote , mude para sediar / superscript.com / net / ucspi-SSL- e chamando pacote / instalação seria suficiente. 
ucspi-SSL é pré-embalados de acordo com o AMD64 ambiente. 
Dependendo de suas Perl configurações, em vez ter sucesso com pacote / base de instalação e pacote / homem para o homem-páginas adicionais.

Nota : O adicional Perl módulo e os testes disponíveis package / rts pode não ter êxito em cada plattform Unix.

Descrição dos programas

Clientes e servidores:

Dependências

Em oder para construir o CDB para controlar connetions de entrada para sslserver , o programa tcprules é exigido que vem com o ucspi-tcp6 pacote. Versões mais antigas do ucspi-tcp pode ser usado como bem, mas não fornecem nem recursos IPv4 CIDR nem IPv6. O gerado cdb no entanto, é binário compatível entre todas as versões.

Informação geral

Nota: Estes locais podem se referir a versões desatualizadas do ucspi-ssl .

Ambiente e segurança TLS

ucspi-ssl 's sslserver irá exibir as configurações atuais cifra, no caso de a bandeira -V é fornecido. Amostra da saída usando Multilog :

 

sslserver: ok 18850 mail.fehcom.de:85.25.149.179:25 kerckhoffs.g10code.com:217.69.77.222::51641
sslserver: ssl 18849 accept TLSv1.2:ECDHE-RSA-AES128-SHA

Aqui, ECDHE-RSA-AES128-SHA é a Cipher negociado em uso em conjunto com TLS 1.2 como protocolo escolhido. Naturalmente, isto só irá funcionar com a maioria das versões recentes do OpenSSL (veja abaixo).

Elliptic Curve Diffie-Hellman

ucspi-SSL suporta as seguintes curvas de OpenSSL:

  • secp521r1
  • secp384r1
  • prime256v1

Você pode verificar as curvas ECC, a sua versão OpenSSL oferece com o seguinte comando:

openssl ecparam -list_curves

Ao contrário de DH com o logaritmo discreto , não há especial DHPRAM arquivo para gerar porque os parms ECC são tomadas a partir de padrões internos.

Outras informações sobre OpenSSL e de uso pode ser encontrada aqui:

dependências e atualizações OpenSSL

Desde ucspi-SSL depende de OpenSSL, é inerentemente afetados por erros e falhas aqui. Assim, por favor, verifiqueCVEs. No caso de você precisa atualizar as bibliotecas OpenSSL, faça o seguinte:

  • Instalar a versão atualizada do OpenSSL de você * NIX repositório - ou -
  • instalar OpenSSL a partir da fonte. Certifique-se de usar o mesmo caminho que a instalação original. Normalmente, os arquivos de cabeçalho necessários são esperados em / usr / include / openssl .

  • Verifique se o seu ucspi-ssl diretório de origem; normalmente /package/host/superscript/net/ucspi-ssl-x.yz .

  • Remova o diretório ./compile e re-run pacote / instalar . Isto irá ligar ucspi-ssl com a nova versão OpenSSL.

Nota: Embora ucspi-ssl que sofrem com a heartbleed bug no OpenSSL é muito improvável que isso poderia ter explorado pela segurança da informação relevante. sslserver em particular levanta um novo espaço de endereço (e que contém o contexto SSL vulneráveis) para cada nova ligação e IP. Neste sentido, sslserver mitiga os riscos.

Atualmente, ucspi-SSL suporta OpenSSL 1.0 somente (e não 1,1, o que fornece uma API significativamente alterado para ser incluído para a próxima release). LibreSSSL é coberto e trabalhar para o OpenBSD 6.0.

Nota para MacOS X Usuário

ucspi-ssl vai compilar com clang no caso xcode está instalado. Você precisa ajustar conf-cc . A seguir incluem resolvido a situação sob MacOS X 'El Capitan' no meu caso para conf-cc :

clang -O2 -g -Wall -I /Developer/SDKs/MacOSX10.6.sdk/usr/include

Você pode adicionar essa declaração na conf-cc arquivo antes da compilação.

Continue com:

package/compile base

já que o MacOS X está faltando o environ instalação.

Nota para Raspi / Linux Raspian

ucspi-tcp6 suporta Raspian Linux eo ARM arquitetura de out-of-the box.

Dentro do src directório de ucspi-ssl uso

sh ./find-systype.sh

para exibir a SW dada e arquitetura HW. Tomando algumas bandeiras de compilador de opções ARM gcc você pode ajustar as configurações para seu sistema ARM dentro de conf-cc e conf-ld .

Juntamente com a maioria dos sistemas Linux, você precisa instalar o ambiente de desenvolvimento OpenSSL. Em um sistema Debian padrão (como Raspian) a ter sucesso com o seguinte:

agt-get update
apt-get install libssl-dev

Aproveite o ucspi-ssl pacote!