If I remove that line from my config file:

<Set name="host">mysite.com</Set>

And then run fuseki and try to connect, using openssl, I get:

$ openssl s_client -connect mysite.com:8443
CONNECTED(00000003)
5546:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake
failure:/SourceCache/OpenSSL098/OpenSSL098-52.40.1/src/ssl/s23_lib.c:185:

I have no idea what this means -- probably a certificate mismatch(?).

J

On Thu, Aug 27, 2015 at 10:46 AM, Andy Seaborne <[email protected]> wrote:
> On 27/08/15 15:20, Jason Levitt wrote:
>>
>> Hi Andy,
>>
>>    Not only is Jetty 9.1 fairly different than Jetty 8, but the current
>> version of Jetty, 9.3 is somewhat different
>> than 9.1.  I will investigate further.
>
>
> I just tried out 9.3 by flipping the version to 9.3.2.v20150730 and it seem
> OK (after 5 mins playing with it....).  So looks like the codebase can
> switch if that helps simplifies things.
>
>         Andy
>
>
>
>>
>> J
>>
>> On Thu, Aug 27, 2015 at 6:42 AM, Andy Seaborne <[email protected]> wrote:
>>>
>>> Jason - thank you for pushing on with this.  It seems a lot of Jetty has
>>> changed Jetty8->Jetty9.1 in this area which is all news to me.
>>>
>>> On 27/08/15 06:09, Jason Levitt wrote:
>>>>
>>>>
>>>> Making some progress but things still don't work.
>>>>
>>>> The startup log (edited) looks like this (domain name changed to
>>>> mysite.com):
>>>
>>>
>>>
>>> This looks like it is because its asking to run on an address that isn't
>>> the
>>> local machine for some reason.  It does not look like something on the
>>> same
>>> port because it is (usually)
>>>
>>> "java.net.BindException: Address already in use"
>>>
>>> but it's might be worth checking.  On Linux, "sudo lsof -i:8443"
>>>
>>> Your config does not set the host but maybe the IP config is getting in
>>> the
>>> way. This is EC2 so does the real DNS name resolve to the IP address of a
>>> local interface?  Does using "localhost" work (= do something different)?
>>>
>>> That's the best clue I could find on StackOverflow.  I haven't found a
>>> way
>>> to get the same error message using plan HTTP on a non-EC2 machine
>>> though.
>>>
>>>> [2015-08-27 03:56:03] Server     ERROR SPARQLServer (port=0): Failed
>>>> to start server: Cannot assign requested address
>>>
>>>
>>> port=0 looks weird though if you are taking control with the config file
>>> that is possible due to the earlier error.
>>>
>>> What is printed is serverConnector.getPort() and serverConnector is the
>>> first/only configured ServerConnector.
>>>
>>>          Andy
>>>
>>>
>>>
>>>>
>>>> [2015-08-27 03:56:03] Server     INFO  Jetty server config file =
>>>> myconfig.xml
>>>> [2015-08-27 03:56:03] Server     INFO  Fuseki 2.3.0
>>>> 2015-07-25T17:11:28+0000
>>>> [2015-08-27 03:56:03] Config     INFO  FUSEKI_HOME=/home/ec2-user/fuseki
>>>> [2015-08-27 03:56:03] Config     INFO
>>>> FUSEKI_BASE=/home/ec2-user/fuseki/run
>>>> [2015-08-27 03:56:03] Servlet    INFO  Initializing Shiro environment
>>>> [2015-08-27 03:56:03] Config     INFO  Shiro file:
>>>> file:///home/ec2-user/fuseki/run/shiro.ini
>>>> [2015-08-27 03:56:03] Config     INFO  Template file:
>>>> templates/config-tdb-dir
>>>> [2015-08-27 03:56:03] Config     INFO  TDB dataset: directory=ds
>>>> [2015-08-27 03:56:03] Config     INFO  Register: /ds
>>>> [2015-08-27 03:56:03] AbstractLifeCycle WARN  FAILED
>>>> ServerConnector@7e5441{SSL-http/1.1}{mysite.com:8443}:
>>>> java.net.BindException: Cannot assign requested address
>>>> java.net.BindException: Cannot assign requested address
>>>> at sun.nio.ch.Net.bind0(Native Method)
>>>> at sun.nio.ch.Net.bind(Net.java:433)
>>>> at sun.nio.ch.Net.bind(Net.java:425)
>>>> ....
>>>> ....
>>>> ....
>>>> [2015-08-27 03:56:03] AbstractLifeCycle WARN  FAILED
>>>> org.eclipse.jetty.server.Server@f9ed3e: java.net.BindException: Cannot
>>>> assign requested address
>>>> java.net.BindException: Cannot assign requested address
>>>> at sun.nio.ch.Net.bind0(Native Method)
>>>> at sun.nio.ch.Net.bind(Net.java:433)
>>>> at sun.nio.ch.Net.bind(Net.java:425)
>>>> ....
>>>> ....
>>>> ....
>>>> [2015-08-27 03:56:03] Server     ERROR SPARQLServer (port=0): Failed
>>>> to start server: Cannot assign requested address
>>>>
>>>>
>>>> And I'm running fuseki 2.3.0 with this command:
>>>>
>>>> nohup ./fuseki-server --port 8443 --update
>>>> --jetty-config=myconfig.xml --loc=ds /ds
>>>>
>>>>
>>>> The "myconfig.xml" file is below (I've already added my certificate
>>>> and key to the Java 8 JSSE):
>>>>
>>>> <?xml version="1.0"?>
>>>> <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN"
>>>> "http://www.eclipse.org/jetty/configure.dtd";>
>>>>
>>>> <Configure id="Server" class="org.eclipse.jetty.server.Server">
>>>>     <Call name="addConnector">
>>>>       <Arg>
>>>>         <New class="org.eclipse.jetty.server.ServerConnector">
>>>> <Arg name="server"><Ref refid="Server" /></Arg>
>>>> <Arg name="factories">
>>>>    <Array type="org.eclipse.jetty.server.ConnectionFactory">
>>>>      <Item>
>>>>        <New class="org.eclipse.jetty.server.HttpConnectionFactory">
>>>> <Arg name="config"><Ref refid="httpConfig" /></Arg>
>>>>        </New>
>>>>      </Item>
>>>>    </Array>
>>>> </Arg>
>>>>         </New>
>>>>       </Arg>
>>>>     </Call>
>>>>
>>>> <New id="sslContextFactory"
>>>> class="org.eclipse.jetty.util.ssl.SslContextFactory">
>>>>     <Set name="KeyStorePath">/home/ec2-user/keystore</Set>
>>>>     <Set name="KeyStorePassword">somepassword</Set>
>>>>     <Set name="KeyManagerPassword">somepassword</Set>
>>>>     <Set name="TrustStorePath">/home/ec2-user/keystore</Set>
>>>>     <Set name="TrustStorePassword">somepassword</Set>
>>>> </New>
>>>>
>>>> <Call id="sslConnector" name="addConnector">
>>>>     <Arg>
>>>>       <New class="org.eclipse.jetty.server.ServerConnector">
>>>>         <Arg name="server"><Ref refid="Server" /></Arg>
>>>>           <Arg name="factories">
>>>>             <Array type="org.eclipse.jetty.server.ConnectionFactory">
>>>>               <Item>
>>>>                 <New
>>>> class="org.eclipse.jetty.server.SslConnectionFactory">
>>>>                   <Arg name="next">http/1.1</Arg>
>>>>                   <Arg name="sslContextFactory"><Ref
>>>> refid="sslContextFactory"/></Arg>
>>>>                 </New>
>>>>               </Item>
>>>>               <Item>
>>>>                 <New
>>>> class="org.eclipse.jetty.server.HttpConnectionFactory">
>>>>                   <Arg name="config"><Ref refid="tlsHttpConfig"/></Arg>
>>>>                 </New>
>>>>               </Item>
>>>>             </Array>
>>>>           </Arg>
>>>>           <Set name="host"><Property name="jetty.host"/></Set>
>>>>           <Set name="port"><Property name="jetty.tls.port"
>>>> default="8443"
>>>> /></Set>
>>>>           <Set name="idleTimeout">30000</Set>
>>>>           <Set name="host">mysite.com</Set>
>>>>         </New>
>>>>     </Arg>
>>>> </Call>
>>>>
>>>> </Configure>
>>>>
>>>> ===================================
>>>>
>>>> On Tue, Aug 25, 2015 at 5:17 PM, Jason Levitt <[email protected]>
>>>> wrote:
>>>>>
>>>>>
>>>>> I can't find any examples of the file that you hand to
>>>>> "--jetty-config"
>>>>>
>>>>> The "official" jetty docs for configuring SSL imply that there are two
>>>>> configuration files,
>>>>>    jetty-ssl-context.xml and  jetty-https.xml.
>>>>>
>>>>> (http://www.eclipse.org/jetty/documentation/current/configuring-ssl.html)
>>>>>
>>>>> The example that you cite:
>>>>>
>>>>>
>>>>>
>>>>> http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/plain/jetty-server/src/main/config/etc/jetty-https.xml
>>>>>
>>>>> says that: "This configuration must be used in conjunction with
>>>>> jetty.xml and jetty-ssl.xml"
>>>>>
>>>>> Where do these files go? The Fuseki download does not have any "etc"
>>>>> directory or
>>>>> any xml configuration files at all.
>>>>>
>>>>> So, I tried handing some XML config files to Fuseki using
>>>>> --jetty-config and it gives very little
>>>>> info in the error (see below). Has anyone actually successfully run
>>>>> Fuseki over SSL?
>>>>>
>>>>> [2015-08-25 22:13:34] Server     INFO  Jetty server config file =
>>>>> ./jetty-https.xml
>>>>> [2015-08-25 22:13:34] Server     ERROR SPARQLServer: Failed to
>>>>> configure server: Unknown configuration type: Call in
>>>>> org.eclipse.jetty.xml.XmlConfiguration@1d80d2b
>>>>> java.lang.IllegalStateException: Unknown configuration type: Call in
>>>>> org.eclipse.jetty.xml.XmlConfiguration@1d80d2b
>>>>> at
>>>>>
>>>>> org.eclipse.jetty.xml.XmlConfiguration.setConfig(XmlConfiguration.java:198)
>>>>> at
>>>>>
>>>>> org.eclipse.jetty.xml.XmlConfiguration.<init>(XmlConfiguration.java:177)
>>>>> at
>>>>>
>>>>> org.apache.jena.fuseki.jetty.JettyFuseki.configServer(JettyFuseki.java:264)
>>>>> at
>>>>>
>>>>> org.apache.jena.fuseki.jetty.JettyFuseki.buildServerWebapp(JettyFuseki.java:222)
>>>>> at org.apache.jena.fuseki.jetty.JettyFuseki.<init>(JettyFuseki.java:91)
>>>>> at
>>>>>
>>>>> org.apache.jena.fuseki.jetty.JettyFuseki.initializeServer(JettyFuseki.java:86)
>>>>> at
>>>>>
>>>>> org.apache.jena.fuseki.cmd.FusekiCmd$FusekiCmdInner.exec(FusekiCmd.java:335)
>>>>> at jena.cmd.CmdMain.mainMethod(CmdMain.java:93)
>>>>> at jena.cmd.CmdMain.mainRun(CmdMain.java:58)
>>>>> at jena.cmd.CmdMain.mainRun(CmdMain.java:45)
>>>>> at
>>>>>
>>>>> org.apache.jena.fuseki.cmd.FusekiCmd$FusekiCmdInner.innerMain(FusekiCmd.java:96)
>>>>> at org.apache.jena.fuseki.cmd.FusekiCmd.main(FusekiCmd.java:59)
>>>>> org.apache.jena.fuseki.FusekiException: Failed to configure a server
>>>>> using configuration file './jetty-https.xml'
>>>>> at
>>>>>
>>>>> org.apache.jena.fuseki.jetty.JettyFuseki.configServer(JettyFuseki.java:269)
>>>>> at
>>>>>
>>>>> org.apache.jena.fuseki.jetty.JettyFuseki.buildServerWebapp(JettyFuseki.java:222)
>>>>> at org.apache.jena.fuseki.jetty.JettyFuseki.<init>(JettyFuseki.java:91)
>>>>> at
>>>>>
>>>>> org.apache.jena.fuseki.jetty.JettyFuseki.initializeServer(JettyFuseki.java:86)
>>>>> at
>>>>>
>>>>> org.apache.jena.fuseki.cmd.FusekiCmd$FusekiCmdInner.exec(FusekiCmd.java:335)
>>>>> at jena.cmd.CmdMain.mainMethod(CmdMain.java:93)
>>>>> at jena.cmd.CmdMain.mainRun(CmdMain.java:58)
>>>>> at jena.cmd.CmdMain.mainRun(CmdMain.java:45)
>>>>> at
>>>>>
>>>>> org.apache.jena.fuseki.cmd.FusekiCmd$FusekiCmdInner.innerMain(FusekiCmd.java:96)
>>>>> at org.apache.jena.fuseki.cmd.FusekiCmd.main(FusekiCmd.java:59)
>>>>>
>>>>> J
>>>>>
>>>>>
>>>>> On Fri, Aug 21, 2015 at 4:14 AM, Andy Seaborne <[email protected]> wrote:
>>>>>>
>>>>>>
>>>>>> On 20/08/15 22:37, Jason Levitt wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Thanks. So I can still use the "--jetty-config" option with Fuseki
>>>>>>> v2.30 ?
>>>>>>>
>>>>>>> J
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Yes, should work to pass in the file.  There was a major jetty version
>>>>>> change (8 to 9) and what effect that has had on that option is unclear
>>>>>> to
>>>>>> me. Connector changed Jetty 8->9
>>>>>>
>>>>>>
>>>>>> http://www.eclipse.org/jetty/documentation/current/configuring-ssl.html
>>>>>>
>>>>>> and their example:
>>>>>>
>>>>>>
>>>>>>
>>>>>> http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/plain/jetty-server/src/main/config/etc/jetty-https.xml
>>>>>>
>>>>>> It would be good to add this to the distribution - if you or anyone
>>>>>> else
>>>>>> has
>>>>>> a working version, I'd be very grateful to get a copy.
>>>>>>
>>>>>>
>>>>>>           Andy
>>>>>>
>>>>>>>
>>>>>>> On Thu, Aug 20, 2015 at 3:46 PM, Andy Seaborne <[email protected]>
>>>>>>> wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On 20/08/15 21:24, Jason Levitt wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Which version of Jetty does Fuseki 2.30 (the latest version) use?
>>>>>>>>>
>>>>>>>>> J
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> http://central.maven.org/maven2/org/apache/jena/jena-fuseki/2.3.0/jena-fuseki-2.3.0.pom
>>>>>>>>
>>>>>>>> ==> Jetty 9.1.1.v20140108
>>>>>>>>
>>>>>>>>            Andy
>>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Thu, Aug 20, 2015 at 6:14 AM, Andy Seaborne <[email protected]>
>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> The Jetty documentation is the best place to go for details of
>>>>>>>>>> setting
>>>>>>>>>> up
>>>>>>>>>> Jetty.
>>>>>>>>>>
>>>>>>>>>> Here's one in the examples/ area but as far as I can tell it's
>>>>>>>>>> more
>>>>>>>>>> int
>>>>>>>>>> he
>>>>>>>>>> category of "should work" (it is from Fuseki1 and that was a
>>>>>>>>>> different
>>>>>>>>>> version of Jetty) rather than tested.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> https://github.com/apache/jena/blob/master/jena-fuseki2/examples/jetty-fuseki.xml
>>>>>>>>>>
>>>>>>>>>> If you, or anyone else, has a better example - please send it.
>>>>>>>>>>
>>>>>>>>>>             Andy
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On 20/08/15 02:54, Jason Levitt wrote:
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> We're in an AWS environment using Fuseki 2 with built-in Jetty.
>>>>>>>>>>> It
>>>>>>>>>>> only talks to internal machines so there
>>>>>>>>>>> is no need to protect it from external exposure.  So that means
>>>>>>>>>>> that
>>>>>>>>>>> the easiest way is to use the
>>>>>>>>>>> `--jetty-config` flag to setup HTTPS to Jetty?  Are there any
>>>>>>>>>>> docs
>>>>>>>>>>> on
>>>>>>>>>>> what the options are for that
>>>>>>>>>>> config file (e.g. what goes into the config file)?
>>>>>>>>>>>
>>>>>>>>>>> J
>>>>>>>>>>>
>>>>>>>>>>> On Tue, Aug 18, 2015 at 3:21 PM, Andy Seaborne <[email protected]>
>>>>>>>>>>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Right.  In a production environment, a reverse proxy is useful
>>>>>>>>>>>> for
>>>>>>>>>>>> several
>>>>>>>>>>>> things and while there is nothing that force a reverse proxy,
>>>>>>>>>>>> the
>>>>>>>>>>>> weight
>>>>>>>>>>>> of
>>>>>>>>>>>> features can mean it's a useful and flexible thing to put into a
>>>>>>>>>>>> production
>>>>>>>>>>>> system.
>>>>>>>>>>>>
>>>>>>>>>>>> 1/ Blocking undesirable clients
>>>>>>>>>>>>         (manic crawlers, badly written PHP scripts)
>>>>>>>>>>>> 2/ more robust to DOS attacks (and accidental attacks)
>>>>>>>>>>>>         Java web containers just aren't as good under silly load
>>>>>>>>>>>> conditions.
>>>>>>>>>>>> 3/ URL rewrite
>>>>>>>>>>>>         E.g don't need /dataset/query - can be any URL you like.
>>>>>>>>>>>> 4/ Security
>>>>>>>>>>>>         integrate with local systems; rich choice of controls.
>>>>>>>>>>>>         Control who and what can update
>>>>>>>>>>>>         No need to restart for shiro chnages.
>>>>>>>>>>>> 5/ Rate control (e.g. no more than N queries at a time)
>>>>>>>>>>>> 6/ https (can be expensive so a C-implementation can help)
>>>>>>>>>>>> 7/ Lots of add-ons and mods for all sorts of tasks.
>>>>>>>>>>>> 8/ Lots of Q&A on stackoverflow!
>>>>>>>>>>>>
>>>>>>>>>>>> Fuseki has "--localhost" to only talk to the machine's localhost
>>>>>>>>>>>> network
>>>>>>>>>>>> interface. In an environment like AWS, where port control is
>>>>>>>>>>>> easily,
>>>>>>>>>>>> it's
>>>>>>>>>>>> trivial to secure the Fuseki server to only talk to the local
>>>>>>>>>>>> reverse
>>>>>>>>>>>> proxy
>>>>>>>>>>>> by blocking all ports except (22 and) 80+443.
>>>>>>>>>>>>
>>>>>>>>>>>>              Andy
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On 18/08/15 20:21, A. Soroka wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> I checked more carefully (should have done that before
>>>>>>>>>>>>> replying)
>>>>>>>>>>>>> and
>>>>>>>>>>>>> it
>>>>>>>>>>>>> seems that Fuseki 2 also offers the `--jetty-config` flag for
>>>>>>>>>>>>> using
>>>>>>>>>>>>> a
>>>>>>>>>>>>> Jetty
>>>>>>>>>>>>> configuration that supports HTTPS:
>>>>>>>>>>>>>
>>>>>>>>>>>>> --jetty-config=FILE    Set up the server (not services) with a
>>>>>>>>>>>>> Jetty
>>>>>>>>>>>>> XML
>>>>>>>>>>>>> file
>>>>>>>>>>>>>
>>>>>>>>>>>>> ---
>>>>>>>>>>>>> A. Soroka
>>>>>>>>>>>>> The University of Virginia Library
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Aug 18, 2015, at 10:34 AM, [email protected]
>>>>>>>>>>>>> <[email protected]> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Are you deploying Fuseki to your own servlet container (e.g.
>>>>>>>>>>>>>> Tomcat
>>>>>>>>>>>>>> or
>>>>>>>>>>>>>> Jetty) or using the server included with Fuseki and is it
>>>>>>>>>>>>>> Fuskei
>>>>>>>>>>>>>> 1
>>>>>>>>>>>>>> or
>>>>>>>>>>>>>> 2?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> If the former, you will need to supply configuration specific
>>>>>>>>>>>>>> to
>>>>>>>>>>>>>> that
>>>>>>>>>>>>>> container. If the latter and it is Fuseki 1, there is a Stack
>>>>>>>>>>>>>> Overflow
>>>>>>>>>>>>>> answer for it:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> https://stackoverflow.com/questions/28310045/enable-https-ssl-on-fuseki-server
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> but the links seems to be dead. The idea is to supply your own
>>>>>>>>>>>>>> Jetty
>>>>>>>>>>>>>> configuration (Jetty is the servlet container that the Fuseki
>>>>>>>>>>>>>> command
>>>>>>>>>>>>>> uses).
>>>>>>>>>>>>>> For Fuseki 2, I think it is still under development? You could
>>>>>>>>>>>>>> use
>>>>>>>>>>>>>> a
>>>>>>>>>>>>>> reverse
>>>>>>>>>>>>>> proxy in front of Fuseki, in that case.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> ---
>>>>>>>>>>>>>> A. Soroka
>>>>>>>>>>>>>> The University of Virginia Library
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Aug 17, 2015, at 7:07 PM, Jason Levitt
>>>>>>>>>>>>>> <[email protected]>
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Sorry if this is a FAQ, but I'm wondering if there are
>>>>>>>>>>>>>>> any guidelines online to setting up
>>>>>>>>>>>>>>> Fuseki for HTTPS access?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Jason
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>
>>>>>>
>>>
>

Reply via email to