source: installer/resources/eepsite/jetty-ssl.xml @ f713a19

Last change on this file since f713a19 was f713a19, checked in by zzz <zzz@…>, 5 years ago

Disable TLS_DHE_DSS_WITH_AES_128_CBC_SHA

  • Property mode set to 100644
File size: 16.5 KB
Line 
1<?xml version="1.0"?>
2<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
3
4<!-- ========================================================================= -->
5<!-- If you have a 'split' directory installation, with configuration          -->
6<!-- files in ~/.i2p (Linux) or %APPDATA%\I2P (Windows), be sure to            -->
7<!-- edit the file in the configuration directory, NOT the install directory.  -->
8<!-- When running as a Linux daemon, the configuration directory is            -->
9<!-- /var/lib/i2p and the install directory is /usr/share/i2p .                -->
10<!--                                                                           -->
11<!-- ========================================================================= -->
12
13<!-- =============================================================== -->
14<!-- Configure SSL for the Jetty Server                              -->
15<!-- this configuration file should be used in combination with      -->
16<!-- other configuration files.                                      -->
17<!--                                                                 -->
18<!-- =============================================================== -->
19<!-- Add a HTTPS SSL listener on port 7668                           -->
20<!--                                                                 -->
21<!-- NOTE:                                                           -->
22<!--                                                                 -->
23<!-- While I2P already encrypts end-to-end, HTTPS support            -->
24<!-- is valuable for authentication.                                 -->
25<!--                                                                 -->
26<!-- These instructions are to add SSL support to an existing        -->
27<!-- HTTP Jetty website.                                             -->
28<!--                                                                 -->
29<!-- For HTTPS ONLY, create a standard server tunnel                 -->
30<!-- (NOT HTTP server), and skip step 8.                             -->
31<!--                                                                 -->
32<!-- For non-Jetty servers (e.g. Apache), follow your server         -->
33<!-- instructions to generate and configure the certificates,        -->
34<!-- and skip steps 1-7.                                             -->
35<!--                                                                 -->
36<!-- =============================================================== -->
37<!--                                                                 -->
38<!-- To add SSL support for your existing website:                   -->
39<!--                                                                 -->
40<!-- Step 1:                                                         -->
41<!-- Get the b32 for your wehsite, it's the link at the              -->
42<!-- "preview" button in the Hidden Services Manager in              -->
43<!-- the console. If you aren't running i2p, you can                 -->
44<!-- get it from your private key file                               -->
45<!-- (probably ~/.i2p/eepsite/eepPriv.dat)                           -->
46<!-- with the command:                                               -->
47<!--     java -cp ~/i2p/lib/i2p.jar net.i2p.data.PrivateKeyFile ~/.i2p/eepsite/eepPriv.dat  -->
48<!-- Save the b32 to put in the certificate's CN in Step 2.          -->
49<!--                                                                 -->
50<!--                                                                 -->
51<!-- Step 2:                                                         -->
52<!-- Generate selfsigned certificates.                               -->
53<!-- We recommend two: one for the hostname, and one for the b32.    -->
54<!-- Note that server-side SNI to serve the correct certificate      -->
55<!-- requires Java 8. Otherwise it will pick one.                    -->
56<!-- (at random? first one?)                                         -->
57<!-- Change the CN and key password in the example, of course.       -->
58<!-- It's OK to keep the keystore password as "changeit" if you like.  -->
59<!-- Use the same passwords for both certificates.                   -->
60<!-- See https://wiki.eclipse.org/Jetty/Howto/Configure_SSL          -->
61<!-- for alternate methods.                                          -->
62<!--
63   keytool -genkey -keystore ~/.i2p/eepsite/etc/keystore.ks -storepass changeit -alias b32 -dname CN=biglongkey.b32.i2p,OU=Eepsite,O=XX,L=XX,ST=XX,C=XX -validity 3652 -keyalg RSA -keysize 2048 -keypass myKeyPassword
64   keytool -genkey -keystore ~/.i2p/eepsite/etc/keystore.ks -storepass changeit -alias hostname -dname CN=example.i2p,OU=Eepsite,O=XX,L=XX,ST=XX,C=XX -validity 3652 -keyalg RSA -keysize 2048 -keypass myKeyPassword
65   chmod 600 ~/.i2p/eepsite/etc/keystore.ks
66 -->
67<!--                                                                 -->
68<!-- But does SNI work? see:                                         -->
69<!-- http://blog.ivanristic.com/2014/03/ssl-tls-improvements-in-java-8.html -->
70<!-- http://stackoverflow.com/questions/20887504/tls-extension-server-name-indication-sni-value-not-available-on-server-side -->
71<!--                                                                 -->
72<!-- And no, you can't get a real certificate for an i2p             -->
73<!-- address from a Certificate Authority, but someday               -->
74<!-- it may be possible. Here's how Tor did it:                      -->
75<!-- https://cabforum.org/2015/02/18/ballot-144-validation-rules-dot-onion-names/ -->
76<!--                                                                 -->
77<!--                                                                 -->
78<!-- Step 3:                                                         -->
79<!-- Update this configuration file.                                 -->
80<!-- Edit the KeyStorePassword, TrustStorePassword, and              -->
81<!-- KeyManagerPassword below to match the passwords from Step 2.    -->
82<!--                                                                 -->
83<!--                                                                 -->
84<!-- Step 4:                                                         -->
85<!-- If running I2P, stop the website Jetty on /configclients        -->
86<!-- in the console.                                                 -->
87<!--                                                                 -->
88<!--                                                                 -->
89<!-- Step 5:                                                         -->
90<!-- Configure Jetty to read in this file at startup.                -->
91<!-- If running I2P, edit the website Jetty on /configclients        -->
92<!-- to add the argument "/path/to/.i2p/eepsite/jetty-ssl.xml".      -->
93<!--                                                                 -->
94<!-- If I2P is not running, edit the file ~/.i2p/clients.config      -->
95<!-- to add the argument "/path/to/.i2p/eepsite/jetty-ssl.xml"       -->
96<!-- at the end of the line:                                         -->
97<!--    clientApp.3.args="eepsite/jetty.xml"                         -->
98<!-- so it now looks like:                                           -->
99<!--    clientApp.3.args="/path to/.i2p/eepsite/jetty.xml" "/path/to/.i2p/eepsite/jetty-ssl.xml" -->
100<!--                                                                 -->
101<!--                                                                 -->
102<!-- Step 6:                                                         -->
103<!-- Start Jetty.                                                    -->
104<!-- If running I2P, start the website Jetty on /configclients       -->
105<!-- in the console.                                                 -->
106<!-- If I2P is not running, start it.                                -->
107<!--                                                                 -->
108<!-- Now go to the /logs page in the console and check for errors    -->
109<!-- in both the router and wrapper logs.                            -->
110<!--                                                                 -->
111<!--                                                                 -->
112<!-- Step 7:                                                         -->
113<!-- Test Jetty.                                                     -->
114<!-- If there were no errors, test your Jetty SSL by                 -->
115<!-- going to https://127.0.0.1:7668/ in your browser.               -->
116<!-- You will have to confirm the security exception for             -->
117<!-- the selfsigned certificate.                                     -->
118<!--                                                                 -->
119<!--                                                                 -->
120<!-- Step 8:                                                         -->
121<!-- Configure i2ptunnel.                                            -->
122<!-- Tell i2ptunnel to route SSL to port 7668 by adding the          -->
123<!-- following custom option on the i2ptunnel edit page              -->
124<!-- for your website:                                               -->
125<!--        targetForPort.443=127.0.0.1:7668                         -->
126<!-- Also, verify that "Use SSL" near the top is NOT set.            -->
127<!-- That would be SSL-over-SSL, which won't work.                   -->
128<!--                                                                 -->
129<!--                                                                 -->
130<!-- Step 9:                                                         -->
131<!-- Start the tunnel if it isn't started.                           -->
132<!--                                                                 -->
133<!--                                                                 -->
134<!-- Step 10:                                                        -->
135<!-- In the i2ptunnel HTTP Client configuration,                     -->
136<!-- enable "Allow SSL to I2P addresses" if it isn't already.        -->
137<!--                                                                 -->
138<!--                                                                 -->
139<!-- Step 11:                                                        -->
140<!-- Test SSL via i2ptunnel.                                         -->
141<!-- Test SSL to your website through I2P by entering                -->
142<!-- https://yoursite.i2p/ in your browser.                          -->
143<!-- If it doesn't work, check the /logs page in the console.        -->
144<!-- You may need to adjust your browser proxy settings to           -->
145<!-- ensure that https i2p URLs are fetched through the I2P proxy.   -->
146<!-- For example, in privoxy, add                                    -->
147<!-- https://*.i2p/* and https://*.i2p:*/*                           -->
148<!--                                                                 -->
149<!--                                                                 -->
150<!-- Step 12:                                                        -->
151<!-- Tell your users.                                                -->
152<!-- Put a link to the https version on your                         -->
153<!-- home page. Remind them that in                                  -->
154<!-- the i2ptunnel HTTP Client configuration,                        -->
155<!-- enable "Allow SSL to I2P addresses" if it isn't already.        -->
156<!-- Remind them to confirm the security exception for               -->
157<!-- the selfsigned certificate (but not one for a hostname          -->
158<!-- mismatch) (but see SNI issues above).                           -->
159<!-- Users may need to adjust their browser proxy settings to        -->
160<!-- ensure that https i2p URLs are fetched through the I2P proxy.   -->
161<!-- For example, in privoxy, add                                    -->
162<!-- https://*.i2p/* and https://*.i2p:*/*                           -->
163<!--                                                                 -->
164<!-- Decide what link to use. The hostname is not secure,            -->
165<!-- as users may have a different hostname in their browser.        -->
166<!-- Also, new address helpers won't work with SSL.                  -->
167<!-- The b32 is the recommended hostname.                            -->
168<!--                                                                 -->
169<!--                                                                 -->
170<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
171
172<Configure id="Server" class="org.eclipse.jetty.server.Server">
173
174  <!-- if NIO is not available, use org.eclipse.jetty.server.ssl.SslSocketConnector -->
175 
176  <New id="sslContextFactory" class="org.eclipse.jetty.http.ssl.SslContextFactory">
177    <Set name="KeyStore">./eepsite/etc/keystore.ks</Set>
178    <Set name="KeyStorePassword">changeit</Set>
179    <Set name="KeyManagerPassword">myKeyPassword</Set>
180    <Set name="TrustStore">./eepsite/etc/keystore.ks</Set>
181    <Set name="TrustStorePassword">changeit</Set>
182  </New>
183
184  <Call name="addConnector">
185    <Arg>
186      <New class="org.eclipse.jetty.server.ssl.SslSelectChannelConnector">
187        <Arg><Ref id="sslContextFactory" /></Arg>
188        <Set name="host">127.0.0.1</Set>
189        <Set name="port">7668</Set>
190        <Set name="maxIdleTime">600000</Set>
191        <Set name="useDirectBuffers">false</Set>
192        <Set name="acceptors">1</Set>
193        <Set name="statsOn">false</Set>
194        <Set name="lowResourcesConnections">5000</Set>
195        <Set name="lowResourcesMaxIdleTime">5000</Set>
196        <Set name="ExcludeCipherSuites">
197          <Array type="java.lang.String">
198            <Item>SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA</Item>
199            <Item>SSL_DH_anon_EXPORT_WITH_RC4_40_MD5</Item>
200            <Item>SSL_DH_anon_WITH_3DES_EDE_CBC_SHA</Item>
201            <Item>SSL_DH_anon_WITH_DES_CBC_SHA</Item>
202            <Item>SSL_DH_anon_WITH_RC4_128_MD5</Item>
203            <Item>SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA</Item>
204            <Item>SSL_DHE_DSS_WITH_DES_CBC_SHA</Item>
205            <Item>SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA</Item>
206            <Item>SSL_DHE_RSA_WITH_DES_CBC_SHA</Item>
207            <Item>SSL_RSA_EXPORT_WITH_DES40_CBC_SHA</Item>
208            <Item>SSL_RSA_EXPORT_WITH_RC4_40_MD5</Item>
209            <Item>SSL_RSA_WITH_DES_CBC_SHA</Item>
210            <Item>SSL_RSA_WITH_NULL_MD5</Item>
211            <Item>SSL_RSA_WITH_NULL_SHA</Item>
212            <Item>TLS_DH_anon_WITH_AES_128_CBC_SHA</Item>
213            <Item>TLS_DH_anon_WITH_AES_128_CBC_SHA256</Item>
214            <Item>TLS_DH_anon_WITH_AES_128_GCM_SHA256</Item>
215            <Item>TLS_DH_anon_WITH_AES_256_CBC_SHA</Item>
216            <Item>TLS_DH_anon_WITH_AES_256_CBC_SHA256</Item>
217            <Item>TLS_DH_anon_WITH_AES_256_GCM_SHA384</Item>
218            <Item>TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA</Item>
219            <Item>TLS_ECDH_anon_WITH_AES_128_CBC_SHA</Item>
220            <Item>TLS_ECDH_anon_WITH_AES_256_CBC_SHA</Item>
221            <Item>TLS_ECDH_anon_WITH_NULL_SHA</Item>
222            <Item>TLS_ECDH_anon_WITH_RC4_128_SHA</Item>
223            <Item>TLS_ECDH_ECDSA_WITH_NULL_SHA</Item>
224            <Item>TLS_ECDHE_ECDSA_WITH_NULL_SHA</Item>
225            <Item>TLS_ECDHE_RSA_WITH_NULL_SHA</Item>
226            <Item>TLS_ECDH_RSA_WITH_NULL_SHA</Item>
227            <Item>TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5</Item>
228            <Item>TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA</Item>
229            <Item>TLS_KRB5_EXPORT_WITH_RC4_40_MD5</Item>
230            <Item>TLS_KRB5_EXPORT_WITH_RC4_40_SHA</Item>
231            <Item>TLS_KRB5_WITH_3DES_EDE_CBC_MD5</Item>
232            <Item>TLS_KRB5_WITH_3DES_EDE_CBC_SHA</Item>
233            <Item>TLS_KRB5_WITH_DES_CBC_MD5</Item>
234            <Item>TLS_KRB5_WITH_DES_CBC_SHA</Item>
235            <Item>TLS_KRB5_WITH_RC4_128_MD5</Item>
236            <Item>TLS_KRB5_WITH_RC4_128_SHA</Item>
237            <Item>TLS_RSA_WITH_NULL_SHA256</Item>
238            <Item>SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA</Item>
239            <Item>SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA</Item>
240            <Item>SSL_RSA_WITH_3DES_EDE_CBC_SHA</Item>
241            <Item>SSL_RSA_WITH_RC4_128_MD5</Item>
242            <Item>SSL_RSA_WITH_RC4_128_SHA</Item>
243            <Item>TLS_ECDH_ECDSA_WITH_RC4_128_SHA</Item>
244            <Item>TLS_ECDH_RSA_WITH_RC4_128_SHA</Item>
245            <Item>TLS_ECDHE_ECDSA_WITH_RC4_128_SHA</Item>
246            <Item>TLS_ECDHE_RSA_WITH_RC4_128_SHA</Item>
247            <Item>TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA</Item>
248            <Item>TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA</Item>
249            <Item>TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA</Item>
250            <Item>TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA</Item>
251            <Item>TLS_DHE_DSS_WITH_AES_128_CBC_SHA</Item>
252            <!-- Please keep this list in sync with the one in I2PSSLSocketFactory -->
253          </Array>
254        </Set>
255      </New>
256    </Arg>
257  </Call>
258</Configure>
Note: See TracBrowser for help on using the repository browser.