ssl.html 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <title>SSL</title>
  5. <!-- Copyright Embedthis Software. All Rights Reserved. -->
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <meta charset="utf-8" />
  8. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  9. <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
  10. <meta name="description" content="Simple, fast, secure embedded web server" />
  11. <link href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,700|Open+Sans:300italic,400,300,700'
  12. rel='stylesheet' type='text/css'>
  13. <link href='https://fonts.googleapis.com/css?family=Julius+Sans+One' rel='stylesheet' type='text/css'>
  14. <link href="../images/favicon.ico" rel="shortcut icon" />
  15. <link href="../lib/semantic-ui/semantic.min.css" rel="stylesheet" type="text/css" />
  16. <link href="../css/all.min.css" rel="stylesheet" type="text/css" />
  17. <link href="../css/api.min.css" rel="stylesheet" type="text/css" />
  18. </head>
  19. <body class="show-sidebar">
  20. <div class="sidebar">
  21. <div class="ui large left vertical inverted labeled menu">
  22. <div class="item">
  23. <a href="../" class="logo">GoAhead Docs</a>
  24. </div>
  25. <div class="item">
  26. <a href="../">
  27. <b>General</b>
  28. </a>
  29. <div class="menu">
  30. <a class="item" href="../">GoAhead Overview</a>
  31. <a class="item" href="../users/features.html">GoAhead Features</a>
  32. <a class="item" href="https://embedthis.com/goahead/download.html">Download</a>
  33. <a class="item" href="../licensing/">Licensing</a>
  34. </div>
  35. </div>
  36. <div class="item">
  37. <a href="../start/">
  38. <b>Getting Started</b>
  39. </a>
  40. <div class="menu">
  41. <a class="item" href="../start/quick.html">Quick Start</a>
  42. <a class="item" href="../start/installing.html">Installing GoAhead</a>
  43. <a class="item" href="../start/running.html">Running GoAhead</a>
  44. <a class="item" href="../start/releaseNotes.html">Release Notes</a>
  45. <a class="item" href="../start/faq.html">GoAhead FAQ</a>
  46. <a class="item" href="../start/source.html">Building from Source</a>
  47. </div>
  48. </div>
  49. <div class="item">
  50. <a href="../users/"><b>User's Guide</b></a>
  51. <div class="menu">
  52. <a class="item" href="../users/ports.html">Ports and Binding</a>
  53. <a class="item" href="../users/routing.html">Routing Requests</a>
  54. <a class="item" href="../users/handlers.html">Request Handlers</a>
  55. <a class="item" href="../users/js.html">Embedded Javascript</a>
  56. <a class="item" href="../users/jst.html">Javascript Templates</a>
  57. <a class="item" href="../users/goactions.html">GoActions</a>
  58. <a class="item" href="../users/cgi.html">CGI Programs</a>
  59. <a class="item" href="../users/authentication.html">User Authentication</a>
  60. <a class="item" href="../users/logFiles.html">Log Files</a>
  61. <a class="item" href="../users/ssl.html">Secure Sockets (SSL)</a>
  62. <a class="item" href="../users/security.html">Security Considerations</a>
  63. <a class="item" href="../users/man.html">Man Pages</a>
  64. </div>
  65. </div>
  66. <div class="item">
  67. <a href="../developers/">Developer's Guide</a>
  68. <div class="menu">
  69. <a class="item" href="../developers/embedding.html">Embedding GoAhead</a>
  70. <a class="item" href="../developers/handlers.html">Creating GoAhead Handlers</a>
  71. <a class="item" href="../developers/authstore.html">Creating Password Verifiers</a>
  72. <a class="item" href="../developers/migrating.html">Migrating to GoAhead 3</a>
  73. <a class="item" href="../developers/rom.html">Serving Pages from ROM</a>
  74. </div>
  75. </div>
  76. <div class="item">
  77. <a href="../ref/">Reference Guide</a>
  78. <div class="menu">
  79. <a class="item" href="../ref/compatibility.html">Compatibility</a>
  80. <a class="item" href="../ref/native.html">API Library</a>
  81. <a class="item" href="../ref/architecture.html">GoAhead Architecture</a>
  82. <a class="item" href="../standards/http.html">HTTP References</a>
  83. </div>
  84. </div>
  85. <div class="item">
  86. <a href="../developers/project.html">Project Resources</a>
  87. <div class="menu">
  88. <a class="item" href="http://goo.gl/IGbiio">Official GoAhead News</a>
  89. <a class="item" href="https://embedthis.com/goahead/">GoAhead Web Site</a>
  90. <a class="item" href="https://github.com/embedthis/goahead">Source Code Repository</a>
  91. <a class="item" href="https://github.com/embedthis/goahead/issues/99">GoAhead Security Alerts</a>
  92. <a class="item" href="https://github.com/embedthis/goahead/issues">Project Issue Database</a>
  93. <a class="item" href="https://github.com/embedthis/goahead/releases">Change Log</a>
  94. <a class="item" href="https://github.com/embedthis/goahead/milestones">Roadmap</a>
  95. <a class="item" href="https://embedthis.com/developers/contributors.html">Contributors Agreement</a>
  96. </div>
  97. </div>
  98. <div class="item">
  99. <b>Links</b>
  100. <div class="menu">
  101. <a class="item" href="https://embedthis.com/">Embedthis Web Site</a>
  102. <a class="item" href="https://embedthis.com/blog/">Embedthis Blog</a>
  103. <a class="item" href="http://twitter.com/embedthat">Twitter</a>
  104. </div>
  105. </div>
  106. </div>
  107. </div>
  108. <div class="ui inverted masthead">
  109. <div class="ui fixed inverted menu">
  110. <div class="ui sidebar-launch button">
  111. <i class="icon list layout"></i>
  112. </div>
  113. <div class="right menu">
  114. <a class="item" href="https://embedthis.com/">Embedthis</a>
  115. <a class="item" href="https://embedthis.com/goahead/">GoAhead Site</a>
  116. <span class="desktop-only">
  117. <a class="item" href="http://goo.gl/9bL9rM">GoAhead News</a>
  118. <a class="item" href="https://github.com/embedthis/goahead">Repository</a>
  119. <a class="item" href="https://embedthis.com/blog/">Blog</a>
  120. <a class="item" href="https://twitter.com/embedthat">Twitter</a>
  121. </span>
  122. </div>
  123. </div>
  124. <div class="ui breadcrumb">
  125. <a class="section" href="../">Home</a>
  126. <div class="divider">/</div>
  127. <a class="section" href="../users/">
  128. User's Guide
  129. </a>
  130. <div class="divider">/</div>
  131. <a class="active section" href="ssl.html">SSL</a>
  132. </div>
  133. <iframe class="version desktop-only" src="../version.html"></iframe>
  134. </div>
  135. <div class="content">
  136. <h1>Configuring SSL</h1>
  137. <p>GoAhead supports the Secure Sockets Layer (SSL) protocol for authenticating systems and encrypting data.
  138. Use of this protocol enables secure data transmission to and from clients in a standards-based manner.</p>
  139. <p>This document provides step-by-step instructions for configuring SSL in GoAhead. If you are unfamiliar
  140. with SSL, please read the <a href="sslOverview.html">SSL Overview</a> first.</p><a id="sslQuickStart"></a>
  141. <p>Except for the MbedTLS stack which is integrated, GoAhead includes only the interface to the SSL
  142. stack and not the SSL library itself. You need to build your required SSL stack and then configure
  143. GoAhead to use that SSL stack. See
  144. <a href="http://l:5000/start/source.html">Building From Source</a> for details on configuring GoAhead to
  145. use SSL.</p>
  146. <h2 >SSL Quick Start</h2>
  147. <p>The default build of GoAhead will support SSL on port 443 for all network interfaces. You
  148. can immediately test SSL access to documents by using the <b>https://</b> scheme and <b>443</b> as the
  149. port. For example, to access the home page using SSL, use this URL in your browser:</p>
  150. <pre class="ui code segment">
  151. https://127.0.0.1
  152. </pre>
  153. <h2>Self-Signed Certificate</h2>
  154. <p>GoAhead is shipped with a self-signed certificate to identify the web server. This certificate is
  155. suitable for testing purposes only and your browser will issue a warning when you access the server. For
  156. production use, you should obtain your own service certificate from signing authorities such as <a href=
  157. "http://www.verisign.com">Verisign</a>.</p><a id="sslConfigurationDirectives"></a>
  158. <h2 >Build-time SSL Configuration Directives</h2>
  159. <p>GoAhead uses several <i>main.bit</i> configuration directives to control SSL and manage secure access to the
  160. server.
  161. <p>The relevant SSL directives are:</p>
  162. <ul>
  163. <li>key &mdash; SSL public key</li>
  164. <li>certificate &mdash; SSL certificate</li>
  165. <li>ciphers &mdash; Cipher suite to use for openssl</li>
  166. <li>caFile &mdash; File of certificates if verifying client certificates</li>
  167. <li>caPath &mdash; Directory of certificates if verifying client certificates</li>
  168. </ul>
  169. <a id="sslConfigurationExample"></a>
  170. <a id="generatingKeys"></a>
  171. <h2 >Generating Keys and Certificates</h2>
  172. <p>To generate a request file that you can send to a certificate issuing authority such as <a href=
  173. "http://www.verisign.com">Verisign</a>, use the following openssl command or equivalent command from your
  174. SSL provider:</p>
  175. <pre class="ui code segment">
  176. openssl genrsa -des3 -out server.key 1024
  177. openssl req -new -key server.key -out server.csr
  178. </pre>
  179. <p>This will generate a server key in the file "server.key" and will generate a certificate request in the
  180. file "server.csr" that you can send to the issuing authority. The issuing authority will generate a server
  181. certificate for your server and they will sign it with their private key. Subsequently, clients will be
  182. able to use the signing authorities public key to decrypt your server certificate and thus verify the
  183. identity of your server when negotiating a SSL session. When running these commands, you will be prompted
  184. to enter a pass-phrase password to decrypt the server private key. REMEMBER this password.</p>
  185. <p><b>SECURITY WARNING</b>: Safeguard the "server.key" private key jealously. If this falls into malicious
  186. hands, then your server identity may be hijacked by another site.</p>
  187. <h2 >SSL Providers</h2>
  188. <p>GoAhead employs an open architecture SSL Provider interface so that customers can select the ideal SSL
  189. provider for their needs. Different SSL implementations excel in various ways. Some are compact, others are
  190. fast and some are extensive in their cipher support.</p>
  191. <p>The MbedTLS SSL stack and interface are included with GoAhead. Other SSL interfaces are installed using the
  192. <a href="https://embedthis.com/pak/">Pak Package manager</a>.</p>
  193. <ul>
  194. <li>MbedTLS &mdash; designed for embedded use. See
  195. <a href="https://embedthis.com/catalog/#/?keywords=goahead-mbedtls">goahead-mbedtls</a>.
  196. Integrated with GoAhead and enabled by default</em>.</li>
  197. <li>OpenSSL &mdash; large and complete. Designed for enterprise use.
  198. See <a href= "http://www.openssl.org">http://www.openssl.org</a>.</li>
  199. <li>MatrixSSL &mdash; designed for embedded use. See
  200. <a href="https://embedthis.com/catalog/#/?keywords=goahead-matrixssl">goahead-matrixssl</a>.
  201. Install via <em>pak install goahead-matrixssl</em>.</li>
  202. <li>Mocana NanoSSL &mdash; designed for embedded use. See
  203. <a href="https://embedthis.com/catalog/#/?keywords=goahead-nanossl">goahead-nanossl</a>.
  204. Install via <em>pak install goahead-nanossl</em>.</li>
  205. </ul>
  206. </div>
  207. <div class="terms ui basic center aligned segment">
  208. <p>&copy; Embedthis Software, 2003-2015. All rights reserved.</p>
  209. </div>
  210. <script src="../lib/jquery/jquery.min.js"></script>
  211. <script src="../lib/semantic-ui/semantic.min.js"></script>
  212. <script src="../scripts/sidebar.min.js"></script>
  213. </body>
  214. </html>