ssl.html 13 KB

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