[Dancer-users] Secure http (https) with Dancer

Gurunandan Bhat gbhat at pobox.com
Tue Dec 14 10:55:30 CET 2010

On Tue, Dec 14, 2010 at 2:38 PM, sawyer x <xsawyerx at gmail.com> wrote:
> The SSL layer on top of HTTP (A.K.A. HTTPS) is handled by the web server.
> You'll need to understand about the differences of layers. This is a bit
> long but it will help you.
> A bit of theory:
> The specific server that Dancer uses depends on the environment you picked.
> Dancer is PSGI compatible which means you can pick any PSGI server (or
> server that supports PSGI interoperability). That means Twiggy, Starman (the
> common one) or Tatsumaki. There are a few servers for which there is a
> compatibility layer for PSGI, such as Apache or Perlbal (which supports a
> web server, not just a reverse proxy). Apache has support for SSL, so does
> Perlbal. I do believe the others have something along those lines but
> haven't checked.
> Dancer uses HTTP::Server::Simple to provide you with an in-house web server
> for development purposes. This means that HTTP::Server::Simple should be
> able to handle SSL in that case, which it does not. However, if you'll read
> the docs, it states that you can provide a connection accept hook to handle
> SSL, such as:
>     sub accept_hook {
>         my $self = shift;
>         my $fh   = $self->stdio_handle;
>         $self->SUPER::accept_hook(@_);
>         my $newfh =
>         IO::Socket::SSL->start_SSL( $fh,
>             SSL_server    => 1,
>             SSL_use_cert  => 1,
>             SSL_cert_file => 'myserver.crt',
>             SSL_key_file  => 'myserver.key',
>         )
>         or warn "problem setting up SSL socket: " .
> IO::Socket::SSL::errstr();
>         $self->stdio_handle($newfh) if $newfh;
>     }
> What to do:
> Either pick a web server that supports SSL (Apache, Perlbal) or put a
> reverse proxy on the front that will serve SSL to the user (Perlbal can do
> that do, Nginx is good at it, there's a few more to choose from).
> Don't use HTTP::Server::Simple for production (even though it might seem
> tempting). Do a bit of research and decide what you feel most comfortable
> with.
> I personally host a few websites on my server using Apache, so for me the
> best option is always through Apache's FastCGI layer. However, I'm
> considering changing to Nginx in the front (since it's very fast) to provide
> static content and SSL where needed.
> Hope this didn't tire you :)
> Good luck!
> Sawyer.

On the contrary Sawyer, thanks for a clear explanation of the issues
involved. Will get back with any questions after I do some research
for what can be done.  Also, the fact that you could use accept_hook
to handle ssl connections in HTTP::Server::Simple was a new learning
for me.

Thank you

More information about the Dancer-users mailing list