Skip to content

Latest commit

 

History

History

ssl_hello_world

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

Secure hello world example

To try this example, you need GNU make and git in your PATH.

To build and run the example, use the following command:

$ make run

Then point your browser to https://localhost:8443

You will be greeted by a security message. You can ask for more information and ultimately accept to access localhost. This is due to the example using a self-signed certificate.

Recent browsers will communicate using HTTP/2. Older browsers will use HTTP/1.1.

HTTP/1.1 example output

$ curl -k -i https://localhost:8443
HTTP/1.1 200 OK
connection: keep-alive
server: Cowboy
date: Fri, 28 Sep 2012 04:10:25 GMT
content-length: 12

Hello world!

HTTP/2 example output

$ nghttp -v https://localhost:8443
[  0.001] Connected
The negotiated protocol: h2
[  0.009] recv SETTINGS frame <length=0, flags=0x00, stream_id=0>
          (niv=0)
[  0.009] send SETTINGS frame <length=12, flags=0x00, stream_id=0>
          (niv=2)
          [SETTINGS_MAX_CONCURRENT_STREAMS(0x03):100]
          [SETTINGS_INITIAL_WINDOW_SIZE(0x04):65535]
[  0.009] send SETTINGS frame <length=0, flags=0x01, stream_id=0>
          ; ACK
          (niv=0)
[  0.009] send PRIORITY frame <length=5, flags=0x00, stream_id=3>
          (dep_stream_id=0, weight=201, exclusive=0)
[  0.009] send PRIORITY frame <length=5, flags=0x00, stream_id=5>
          (dep_stream_id=0, weight=101, exclusive=0)
[  0.009] send PRIORITY frame <length=5, flags=0x00, stream_id=7>
          (dep_stream_id=0, weight=1, exclusive=0)
[  0.009] send PRIORITY frame <length=5, flags=0x00, stream_id=9>
          (dep_stream_id=7, weight=1, exclusive=0)
[  0.009] send PRIORITY frame <length=5, flags=0x00, stream_id=11>
          (dep_stream_id=3, weight=1, exclusive=0)
[  0.009] send HEADERS frame <length=38, flags=0x25, stream_id=13>
          ; END_STREAM | END_HEADERS | PRIORITY
          (padlen=0, dep_stream_id=11, weight=16, exclusive=0)
          ; Open new stream
          :method: GET
          :path: /
          :scheme: https
          :authority: localhost:8443
          accept: */*
          accept-encoding: gzip, deflate
          user-agent: nghttp2/1.7.1
[  0.010] recv SETTINGS frame <length=0, flags=0x01, stream_id=0>
          ; ACK
          (niv=0)
[  0.010] recv (stream_id=13) :status: 200
[  0.010] recv (stream_id=13) content-length: 12
[  0.010] recv (stream_id=13) content-type: text/plain
[  0.010] recv (stream_id=13) date: Sat, 30 Apr 2016 12:54:32 GMT
[  0.010] recv (stream_id=13) server: Cowboy
[  0.010] recv HEADERS frame <length=45, flags=0x04, stream_id=13>
          ; END_HEADERS
          (padlen=0)
          ; First response header
Hello world![  0.010] recv DATA frame <length=12, flags=0x01, stream_id=13>
          ; END_STREAM
[  0.010] send GOAWAY frame <length=8, flags=0x00, stream_id=0>
          (last_stream_id=0, error_code=NO_ERROR(0x00), opaque_data(0)=[])