Thursday, February 11, 2010

Acessando a FreeNode com SSL no xchat

Opa, essa é barbada, então resolvi escrever rapidinho a respeito. Agora não preciso mais me sentir envergonhado por causa da minha senha ridícula no nickserv!

Desde que migrou para servidores novos, a FreeNode permite o acesso via SSL na porta 7000. Para não ter que clicar naquela caixinha "accept invalid SSL certificates", o que seria meio besta, é necessário baixar o certificado que eles usam e instalar em um local em que o xchat o encontre. Cliquem com o botão direito sobre o link, e mandem salvar. Se clicarem direto com o esquerdo, o browser provavelmente vai querer instalar o certificado nele mesmo. :)

O xchat (ou será que é padrão da openssl?) acessa os certificados que estiverem em /etc/pki/tls/certs/ca-bundle.crt, que é um arquivão contendo vários certificados raiz de autoridades certificadoras. Pelo que vi, os cerificados estão todos concatenados neste arquivo em formato PEM. O certificado da CA usado pela FreeNode veio em formato DER, então é necessário convertê-lo para PEM com o comando abaixo:

$ openssl x509 -in GandiStandardSSLCA.crt -inform DER > GandiStandardSSLCA.pem

Depois disso é só concatenar no /etc/pki/tls/certs/ca-bundle.crt, o que eu fiz com:

$ sudo vim /etc/pki/tls/certs/ca-bundle.crt
Shift+G (vai pro final do arquivo)
:r GandiStandardSSLCA.pem
:wq


Agora basta abrir a configuração da rede FreeNode no xchat, clicar em "Use SSL for all the servers on this network". Aproveite pra verificar que a caixinha "Accept invalid SSL certificate" está DESMARCADA. Clique no servidor "irc.freenode.net", depois em Edit e mude para "irc.freenode.net/7000" para que o xchat conecte na porta 7000.

Depois disso é Close, desconectar, reconectar e pronto!

Verifique se nas primeiras mensagens durante a conexão aparecem:

* Looking up irc.freenode.net
* Connecting to chat.freenode.net (208.71.169.36) port 7000...
* * Certification info:
* Subject:
* OU=Domain Control Validated
* OU=Gandi Standard Wildcard SSL
* CN=*.freenode.net
* Issuer:
* C=FR
* O=GANDI SAS
* CN=Gandi Standard SSL CA
* Public key algorithm: rsaEncryption (2048 bits)
* Sign algorithm sha1WithRSAEncryption
* Valid since Jan 13 00:00:00 2010 GMT to Jan 13 23:59:59 2011 GMT
* * Cipher info:
* Version: TLSv1/SSLv3, cipher DHE-RSA-AES256-SHA (256 bits)


Pronto, não precisa mais ter vergonha se alguém sniffar em um cyber-café. :)

Update: o Zucco me avisou que ele apenas colocou o arquivo GandiStandardSSLCA.pem dentro do diretório ~/.xchat2/ e já funcionou. Eu devo ter lido alguma documentação antiga do xchat...