@@ -48,6 +48,26 @@ If you wish to enable SSLv2 or SSLv3, run node with the `--enable-ssl2` or
4848` --enable-ssl3 ` flag respectively. In future versions of Node.js SSLv2 and
4949SSLv3 will not be compiled in by default.
5050
51+ This means that without having one or both of those flags set on the command
52+ line, Node.js will ** throw** if you explicitly set the ` secureProtocol ` to
53+ ` SSLv3_method ` or similar. However the default protocol method Node.js uses is
54+ ` SSLv23_method ` which would be more accurately named ` AutoNegotiate_method ` .
55+ This method will try and negotiate from the highest level down to whatever the
56+ client supports. To provide a secure default, Node.js (since v0.10.33)
57+ explicitly disables the use of SSLv3 and SSLv2 by setting the ` secureOptions `
58+ to be ` SSL_OP_NO_SSLv3|SSL_OP_NO_SSLv2 ` (again, unless you have passed
59+ ` --enable-ssl3 ` or ` --enable-ssl2 ` ).
60+
61+ The ramifications of this behavior change:
62+
63+ * If your application is behaving as a secure server, clients who are ` SSLv3 `
64+ only will now not be able to appropriately negotiate a connection and will be
65+ refused. In this case your server will emit a ` clientError ` event. The error
66+ message will include ` 'wrong version number' ` .
67+ * If your application is behaving as a secure client and communicating with a
68+ server that doesn't support methods more secure than SSLv3 then your connection
69+ won't be able to negotiate and will fail. In this case your client will emit a
70+ an ` error ` event. The error message will include ` 'wrong version number' ` .
5171
5272## Client-initiated renegotiation attack mitigation
5373
0 commit comments