diff --git a/IPython/html/notebookapp.py b/IPython/html/notebookapp.py
index 9df60d1..536aee5 100644
--- a/IPython/html/notebookapp.py
+++ b/IPython/html/notebookapp.py
@@ -505,7 +505,11 @@ class NotebookApp(BaseIPythonApplication):
tornado_settings = Dict(config=True,
help="Supply overrides for the tornado.web.Application that the "
"IPython notebook uses.")
-
+
+ ssl_options = Dict(config=True,
+ help="""Supply SSL options for the tornado HTTPServer.
+ See the tornado docs for details.""")
+
jinja_environment_options = Dict(config=True,
help="Supply extra arguments that will be passed to Jinja environment.")
@@ -826,11 +830,13 @@ class NotebookApp(BaseIPythonApplication):
self.log, self.base_url, self.default_url, self.tornado_settings,
self.jinja_environment_options
)
+ ssl_options = self.ssl_options
if self.certfile:
- ssl_options = dict(certfile=self.certfile)
- if self.keyfile:
- ssl_options['keyfile'] = self.keyfile
- else:
+ ssl_options['certfile'] = self.certfile
+ if self.keyfile:
+ ssl_options['keyfile'] = self.keyfile
+ if not ssl_options:
+ # None indicates no SSL config
ssl_options = None
self.login_handler_class.validate_security(self, ssl_options=ssl_options)
self.http_server = httpserver.HTTPServer(self.web_app, ssl_options=ssl_options,
diff --git a/docs/source/whatsnew/pr/ssl-options.rst b/docs/source/whatsnew/pr/ssl-options.rst
new file mode 100644
index 0000000..734824c
--- /dev/null
+++ b/docs/source/whatsnew/pr/ssl-options.rst
@@ -0,0 +1,4 @@
+* add ``NotebookApp.ssl_options`` config value.
+ This is passed through to tornado HTTPServer,
+ and allows SSL configuration beyong specifying a cert and key,
+ such as disabling SSLv3.