Posts

  • StartSSL: certificados gratuitos e suas peculiaridades

    A StartCom é uma empresa israelense, fundada em 1999 e sediada em Eilat, que dentre suas atividades trabalha com certificados SSL/TLS sob a marca StartSSL. Ela não seria muito diferente de qualquer outra empresa que comercializa produtos parecidos se não tivesse um diferencial: seu certificado SSL “Class 1” é oferecido gratuitamente, desde que sua finalidade seja voltada para uso pessoal. Não é necessário nada mais além de validar seu e-mail, ao criar uma conta com eles, e seu domínio (o que também é feito por e-mail), ao emitir um certificado. O primeiro passo, especificamente, é feito de uma maneira não muito convencional.

    Logo de imediato é possível perceber o quanto o processo de registro é diferente: não há a criação de um usuário e senha. Ao se cadastrar, é enviado um e-mail com um código que deve ser colado na tela pós-cadastro do site deles. Não há sequer um link que o leve à mesma janela de confirmação, que não pode ser fechada enquanto este código não for submetido. Após confirmado, será exibida uma mensagem dizendo que a conta será validada manualmente antes que possa ser efetivamente utilizada. Não levei isso muito a sério, pois uma vez efetuei o registro entre 6 e 7 da manhã (horário de Israel) e mesmo assim validaram a conta em pouco mais do que 5 minutos.

    Quando confirmarem a requisição de criação da conta, um segundo e-mail será enviado. Desta vez haverá um link que o levará para o processo registro propriamente dito, que consiste basicamente em gerar um certificado S/MIME de autenticação do cliente. O processo é realizado de forma automática através de um wizardContinue/Install/Finish” e ao final você estará automaticamente logado no sistema. Neste momento, no gerenciador de certificados do navegador (no Firefox: Preferences -> Advanced -> Certificates -> View Certificates) haverá um certificado emitido pela StartCom Ltd. que o identifica como cliente.

    Este certificado, composto também por sua chave privada, identifica e autoriza o navegador a se logar no painel de controle da StartSSL. É muito importante que você não o perca de forma alguma, pois do contrário a única forma de se autenticar novamente será criar uma nova conta e entrar em contato com o suporte, tentando convencê-los a associá-la com a conta antiga, conforme recomenda o FAQ. Utilize o recurso de Backup/Export do gerenciador de certificados do navegador e armazene uma cópia, protegida por senha, em um local seguro.

    Terminado o processo de registro, é necessário validar a propriedade de um domínio antes de emitir um certificado. Os passos são muito simples, consistindo em informar o domínio e um e-mail associado ao mesmo, como os genéricos “[email protected]” e “[email protected]”, ou algum outro endereço encontrado em seu WHOIS. Um código será enviado por e-mail e, confirmando-o, a validação será efetuada. A partir deste ponto, por até 30 dias será possível emitir certificados para este domínio sem precisar validá-lo novamente.

    Passadas estas etapas, é possível enfim emitir o certificado SSL desejado. Acessando a opção Certificates Wizard -> Web Server SSL/TLS Certificate do painel, é possível realizar todo o processo de geração através da interface web. Caso você seja um sysadminold school”, preferirá pular a opção de geração de chave privada, gerando esta e um CSR (Certificate Signing Request) com o OpenSSL através do terminal, o que pode ser feito em um só comando:

    openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr
    

    Respondendo as perguntas, serão gerados dois arquivos: o server.key, correspondente a chave privada do certificado, e o server.csr, que como a própria sigla diz, é a requisição de assinatura de um certificado. Este último é o único que precisa ser enviado para qualquer empresa que trabalhe com geração de certificados. A chave é realmente privada e sem ela o servidor web não poderá utilizar o certificado a ser assinado. Somente quem possuir ambos os arquivos poderá servir conexões HTTPS a partir do domínio.

    Continuando o wizard, será perguntado qual o subdomínio a ser utilizado. O certificado irá valer tanto para este subdomínio quanto para o domínio em si. Isto é, um certificado criado para o “www.example.com” também vale para “example.com”. Ao final destas etapas, estarão disponíveis três certificados que precisarão serem concatenados em um só arquivo. São eles:

    • O certificado do domínio/subdomínio em si;
    • O certificado intermediário;
    • O certificado raiz.

    Esta relação é o que fornece a validade ao certificado do final. De cima pra baixo, cada certificado possui uma assinatura do próximo elo da corrente. É por conta disto que cada sistema operacional ou navegador não precisa conhecer todos os certificados SSL existentes, basta que estes sejam assinados por outro certificado previamente conhecido e confiado como válido. Vale ressaltar ainda que a ordem dos certificados no arquivo que combina todos eles tem de ser a mesma da lista acima.

    Como não poderia deixar de ser, o certificado gratuito da StartSSL possui algumas limitações:

    • A duração máxima do certificado é de um ano (embora seja possível emitir um novo a qualquer momento);
    • O certificado vale para apenas um domínio/subdomínio: nada de wildcards ou múltiplos subdomínios (isto pode ser resolvido emitindo-se mais de um certificado);
    • Embora realmente seja um produto grátis, há um valor a ser pago (US$ 24.90) caso seja necessário revogar o certificado, como no caso de uma chave privada comprometida;
    • O uso do certificado para fins comerciais é vetado.

    Para a grande maioria dos casos de uso, nenhuma destas limitações é realmente crítica a ponto de inviabilizar sua utilização. O comportamento mais incômodo da empresa é mesmo a janela de manutenção, onde toda madrugada de sexta para sábado o site fica indisponível:

    Weekend Maintenance

    Some of our services are offline and under maintenance during the night hours on weekends until 7:00 AM GMT in the morning. We apologize for the temporary inconvenience and thank you for your understanding.

    Estando ciente destes detalhes e tomando cuidado para não perder o certificado do cliente necessário para acessar o painel de controle, a StartSSL oferece um produto diferenciado e que realmente funciona, sem custo algum. É uma boa alternativa enquanto o projeto Let’s Encrypt, que também irá oferecer certificados gratuitos, não é lançado. Há ainda a opção de certificados wildcard ou EV (Extended Validation, aqueles cujo nome da empresa aparece em destaque na barra de endereços) pagos, caso estes sejam uma necessidade.

  • Myhro Blog agora via Jekyll

    Há pouco mais de dois anos e meio, em Janeiro de 2013, o Myhro Blog havia sido migrado do Wordpress para o Octopress. Fiquei bastante satisfeito com a migração e empolgado com a ideia de não mais depender de um banco de dados para armazenar todas as postagens, utilizando Git para versionar o conteúdo. Com a própria mudança no processo, ficou muito mais natural escrever e publicar tudo a partir do terminal, sem precisar acessar uma interface web para isto. Entretanto, paraiva sobre mim uma preocupação: o Octopress era uma bomba-relógio.

    Que fique claro que não irei de forma alguma falar mal do Octopress, que me serviu tão bem por tanto tempo. Serei eternamente grato ao Brandon Mathis por tê-lo criado. O problema é que hoje o Octopress se encontra em um estado conhecido como erosão (ou apodrecimento) de software. A última versão estável (2.0) foi lançada em Julho de 2011 e embora a nova versão (3.0) esteja sendo desenvolvida, não sabemos quando será lançada. A última notícia a respeito da mesma é de Janeiro deste ano.

    O maior problema em tentar utilizar uma versão de um software com mais de 4 anos de idade e tantas dependências é simples: não é mais possível utilizá-la. Mesmo reinstalando a gem do Octopress, com todas as suas bibliotecas em suas devidas versões (graças ao Gemfile.lock), apareciam erros que impediam o blog de ser “compilado” (processo de gerar as páginas HTML a partir dos documentos escritos em Markdown). Isto acontece, por exemplo, por mudanças externas, como o fato das bibliotecas instaladas no sistema quais as gems dependem para serem compiladas estarem em versões diferentes de quando estas foram desenvolvidas.

    A situação chegou a um ponto onde eu só podia publicar novos posts no blog ou modificar qualquer configuração do Octopress no meu notebook. Qualquer outro computador, seja minha estação de trabalho no escritório ou o servidor remoto que utilizo para desenvolvimento, não servia para este propósito. A gota d’água foi quando precisei alterar as configurações do plugin de pesquisa no Google (que estava gerando erros de HTTPS por submeter conteúdo de forma não-segura) e não consegui.

    Deste momento em diante tive de decidir o que fazer, se tentaria utilizar a versão 3.0 ainda não lançada ou se abandonaria o Octopress em busca de outra solução. Ao perceber que a nova versão havia se tornado um wrapper ainda mais fino em torno do Jekyll, mas com mais problemas por se tratar de uma versão em desenvolvimento, não tive dúvidas e migrei logo para este último. Há de se ressaltar que algumas funcionalidades foram perdidas (e talvez ainda consiga restaurá-las com um pouquinho de tempo e paciência) no processo:

    • A barra “recent posts”, no canto superior direito, não existe mais. Isto não é uma perda tão grande, já que esta basicamente me servia para notar quais são os cinco posts exibidos na página principal;
    • As “categorias” ainda existem, mas não há as páginas de listagem de cada uma, segregando o arquivo de posts antigos em partes menores;
    • Os links entre posts também foram perdidos. É bacana a ideia de navegar entre “anterior” e “próximo” a partir de um post, mas ainda não verifiquei como resolver isto.

    A parte de “unir o útil ao agradável” fica por conta do GitHub Pages. Já o estava utilizando desde Junho de 2014, quando percebi que o esforço em manter um servidor para hospedar um site estático não valia a pena. Acontece que o deploy do Octopress por lá é meio que uma gambiarra. Os posts são gerados em uma pasta não commitada do repositório, mas que na verdade é outro repositório, e só então enviados para o GitHub. Com o Jekyll não preciso me preocupar com isto, visto que o GitHub Pages tem suporte nativo à plataforma.

  • Limpando um dispositivo com o wipefs

    Havia um tempo em que copiar a instalação de um sistema operacional para um pendrive não era uma tarefa trivial. No caso do Windows era necessário recriar as partições e reescrever o setor de boot do dispositivo USB manualmente - algo que só foi facilitado com o lançamento do Windows USB/DVD Download Tool. No mundo Linux, os utilitários UNetbootin e Universal USB Installer faziam este papel.

    Com o lançamento do Debian Squeeze (6.0), no começo de 2011, me recordo que uma das coisas que considerei mais interessantes era a introdução das “ISO híbridas”, isto é, que poderiam tanto serem gravadas em CD ou DVD quanto facilmente copiadas para um pendrive. Ao invés de se recorrer a softwares criados exclusivamente com este objetivo, bastava então realizar uma cópia bit-a-bit, com ferramentas como dd ou cat que o resultado seria o mesmo.

    Como tudo na vida tem um porém, este processo não é indolor para o pobre pendrive. Por ser necessário reescrever o setor de boot, não é possível copiar a ISO para uma partição, somente para o dispositivo inteiro. O que acontece é que, devido a um processo tão drástico, quando é necessário formatar o pendrive para utilizá-lo novamente como mídia de armazenamento removível, não basta recriar a tabela de partições e formatar com o sistema de arquivos desejado. Desta forma o label dele (o nome que aparece no gerenciador de arquivos) continuará sendo o da última ISO que foi copiada.

    Passei literalmente anos convivendo com isto, sendo indagado corriqueiramente por alguns curiosos sobre o porque do meu pendrive levar o nome do Debian ou do Xubuntu. Até que um dia, em um artigo que infelizmente não lembro o nome para poder linkar aqui, conheci o wipefs. Sua principal funcionalidade, como o próprio nome sugere, é apagar assinaturas de sistemas de arquivos em um dispositivo de armazenamento. Desde então, com um simples wipefs -a /dev/sdX, um incômodo de tanto tempo pôde ser resolvido.

  • Um assunto triste: licenças de software

    Um tema bastante delicado, triste e por vezes quase incompreensível no mundo do software são suas licenças. Se trata de um assunto tão complexo, que nem mesmo as próprias licenças de software livre resolvem isso de maneira simplificada. É possível que duas licenças de software livre não sejam compatíveis entre si e, pasmem, nem mesmo entre duas versões dela mesma. Isto é tão absurdo que a própria Free Software Foundation destaca na descrição da GPLv3:

    “Please note that GPLv3 is not compatible with GPLv2 by itself.”

    Um caso curioso e que serve perfeitamente para exemplificar algumas destas limitações é o MongoDB, um banco de dados NoSQL orientado a documentos. O servidor do MongoDB e suas ferramentas de administração são disponibilizados através da licença GNU Affero GPL v3.0. A principal diferença entre a GPL e a AGPL é que esta última considera a utilização em rede uma forma de distribuição - algo a ser considerado no caso de um sistema de gerenciamento de banco de dados.

    Agora, a parte curiosa é que os drivers oficiais do MongoDB, isto é, as bibliotecas utilizadas em diversas linguagens de programação para comunicação com o servidor de banco de dados, são distribuídos sob a licença Apache License v2.0. E por que isto acontece? Porque a licença Apache permite que um sistema proprietário incorpore seu código sem a obrigação trazida pela cláusula de reciprocidade, presente em outras licenças como as já citadas GPL e AGPL.

    A escolha de uma licença de software livre adequada é uma tarefa tão complicada que o próprio GitHub lançou, em Julho de 2013, uma campanha para auxiliar os desenvolvedores com isto: o ChooseALicense.com, um site que basicamente resume as licenças mais populares para que o processo se torne menos problemático. A iniciativa surtiu efeito, mas ainda hoje menos de 20% dos repositórios do GitHub possuem uma licença definida.

    Quando entramos no campo das licenças de software proprietário, a situação ainda piora. Você sabia que quando o Google Chrome foi lançado, em 2008, seu EULA (End-User License Agreement) dizia que tudo o que fosse transmitido pelo navegador, seja enviado ou recebido, pertencia ao Google? Por fim corrigiram os termos e alegaram que tudo não passou de uma confusão, mas é impossível não relacionar o acontecido com o episódio de South Park onde o Kyle não leu a licença do iTunes ao aceitá-la, o que permitiu a Apple utilizá-lo em uma experiência para desenvolver uma centopéia humana.

    Algumas licenças são tão restritivas que praticamente impossibilitam o uso de um software, como é o caso do OCI8, uma biblioteca que permite a conexão de um sistema em PHP, uma linguagem livre, com uma instância do Oracle DB, um banco de dados proprietário. Para compilar o OCI8, é necessário baixar as bibliotecas que acompanham o cliente (algo entre 30-60MB) distribuído pela Oracle, mas não sem antes aceitar os termos de uso e se registrar no site, uma vez que o download anônimo não é permitido. É sério que consideram isso razoável somente para permitir conexão a um banco de dados que já é pago?

    Jeff Atwood, criador da rede Stack Exchange (Stack Overflow, Server Fault, Ask Ubuntu, etc.), já comentava sobre isso muitos anos atrás: licenças de software são um campo minado, onde sua cabeça dói e você pode até ter vontade de morrer quando reflete a respeito. Se o mundo fosse um lugar mais agradável e com menos burocracia, todos os softwares existentes seriam distribuídos sob licença WTFPL.

  • Perdido no tempo

    Quase cochilando em sua cadeira, no meio de uma tarde de trabalho, resolveu se levantar para não acabar dormindo. Se perguntava se beber até as 3h da manhã de uma terça-feira era um indício de alcoolismo, ou um tapa na cara da sociedade que se mata de trabalhar durante o dia e só se diverte aos finais de semana. Estava um pouco preocupado por ter mandado uma mensagem para o seu último affair quando chegou em casa, mesmo se tratando apenas de uma brincadeira (com fundo de verdade). Celulares realmente não devem ficar próximos de pessoas quais não estão dotadas de suas plenas faculdades mentais.

    De qualquer forma, no momento isto não importava muito, já que a prioridade era apenas se despertar a fim de poder continuar trabalhando. Resolveu ir à sala ao lado, onde estava seu chefe, para comentar sobre as atividades desempenhadas até então e beber um pouco d’água. Chegando lá, lhe foi informado que sua prioridade seria providenciar a papelada referente a sua contratação. Estava sem vontade nenhuma de sair do escritório se não fosse para ir embora, mas não havia outra alternativa senão ir ao centro da cidade realizar o exame admissional, tirar fotos 3x4, etc.

    Havia notado, quando adentrou a sala, que nela haviam duas pessoas estranhas ao escritório. Como ambas estavam de costas, não fazia ideia de quem seriam. Foi somente ao ir buscar o número do telefone da clínica e voltar para a mesma sala quando percebeu que, na verdade, uma daquelas pessoas lhe era muito familiar. Nisso começaram as indagações: “Mas… Ela?! O que ela faz aqui? Se ela se formou em Direito, deveria estar lidando com o setor jurídico da matriz da empresa e não aqui neste escritório. Se ela se formou em Arquitetura, faz um pouco mais de sentido, mas ainda assim não é a arquiteta que veio aqui na semana passada…”. No fundo, não lhe interessava o motivo, independente do quão curioso este fosse. Pois por mais improvável que parecesse aquela situação, independente de quais circunstâncias levaram isto a acontecer, aquela era a sua primeira namorada. Sua vontade era de afagá-la, abraçando-a como se não houvesse amanhã - como o fez quando se despediram pela última vez (quando de fato não houve “amanhã”), mas lembrou-se que esta permissão lhe foi revogada há quase sete anos atrás. Restringiu-se a um singelo e tímido abraço, desses que se dá a velhos amigos, independente do sexo.

    Saindo do escritório, com o intuito de resolver as pendências contratuais, riu sozinho quando estava no elevador. Olhando pro espelho, se deu conta de que a camisa qual estava trajando foi presente dela. “Meu deus… Quais as chances disso acontecer? Só vesti esta camiseta velha porque era uma das últimas que estavam passadas…”, suspirou. Começou a cogitar se aquelas coisas realmente estavam acontecendo, quando chegou na mesma clínica qual havia feito o exame admissional do seu primeiro emprego - acontecimento datado de mais de cinco anos atrás. O ano seria 2014, 2007 ou 2009? Poderia um dia que tinha tudo para ser pacato e corriqueiro, tornar-se-a completamente anacrônico? A situação ficou ainda mais curiosa, quando chegando no estúdio de fotografia, o único funcionário que ainda estava lá era o mesmo que havia tirado suas fotos 3x4 na época da sua primeira contratação.

    Enquanto esperava as fotos serem “reveladas”, cogitou estar nos anos 90 por um breve momento, quando demorou a entender que a moça do estúdio quis dizer que as mesmas estavam sendo impressas. Aproveitou aqueles poucos minutos para pensar na vida, tentando ligar o passado com o presente, imaginando como seria o futuro. Se deu conta de que, como sempre, não fazia ideia do que viria. Mas depois de tantos fatos passados terem sido trazidos a tona no mesmo dia, só tinha certeza que seu maior anseio continuaria sendo a vontade de vivenciar as próximas surpresas que o tempo lhe trará.

Subscribe via RSS