Redirect to HTTPS

Um redirecionador para mandar todos os navegadores para o servidor HTTPS

Tudo criptografado! Sem desculpas!

Antigamente era caro e inconveniente exigir criptografia para servidores HTTP, você teria que no mínimo gastar alguns trocados com uma entidade certificadora. De um tempo para cá isso não é mais verdade, qualquer um pode usar os certificados da letsencrypt.org, é free, fácil de usar e as ferramentas são de código aberto, então não existe mais desculpa para não usar HTTPS nos seus servidores.

Redirecionando para HTTPS

Para redirecionar tudo os navegadores para a porta HTTPS eu escrevi um pequeno serviço em Go que simplesmente retorna o código 301 Moved Permanently para o navegador do usuário e indico o novo local apenas substituindo o URL Scheme de HTTP para HTTPS, e deixo o resto do trabalho para o navegador.

Veja o código:

package main

import (
    "log"
    "net/http"
)

func redirectToHTTPS(w http.ResponseWriter, r *http.Request) {
    redirect := "https://" + r.Host + r.RequestURI
    http.Redirect(w, r, redirect, http.StatusMovedPermanently)
    log.Print("redirect to : " + redirect)
}

func main() {
    log.Print("start redirect http->https")
    if err := http.ListenAndServe(":80", http.HandlerFunc(redirectToHTTPS)); err != nil {
        log.Fatalf("ListenAndServe error: %v", err)
    }
}

Você pode baixar a ultima versão no GitHub em https://github.com/crgimenes/redirectToHTTPS

Para usar basta compilar com go build ou preferivelmente go get:

go get github.com/crgimenes/redirectToHTTPS

Claro que para isso você precisa ter colocado o $GOPATH/bin/ no seu $PATH.

Para executar você vai precisar do root ou de algum usuário com permissão para abrir a porta HTTP.

Eu também escrevi um post falando sobre como criar um servidor HTTPS com Golang e letsencrypt.org.

comments powered by Disqus