@@ -48,6 +48,26 @@ If you wish to enable SSLv2 or SSLv3, run node with the `--enable-ssl2` or
48
48
` --enable-ssl3 ` flag respectively. In future versions of Node.js SSLv2 and
49
49
SSLv3 will not be compiled in by default.
50
50
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' ` .
51
71
52
72
## Client-initiated renegotiation attack mitigation
53
73
0 commit comments