Hi
I have a feeling this might be embarrassing but I'm not getting these examples to work.
SSL Connection tutorial. https://www.b4x.com/android/forum/threads/server-ssl-connections.40130/#content
As well as the Http2 example from this thread -> https://www.b4x.com/android/forum/threads/server-http-2-configuration.61416/
So first off: I created a keystore file with the keytool.
Main.
HttpsFilter
I'm getting a warning about testing1.keystore is not used, and the error i'm getting is:
Http2 example: Made a keystore file with both passwords set to 123456, named keystore.
My Java version is:
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
Error:
I have a feeling this might be embarrassing but I'm not getting these examples to work.
SSL Connection tutorial. https://www.b4x.com/android/forum/threads/server-ssl-connections.40130/#content
As well as the Http2 example from this thread -> https://www.b4x.com/android/forum/threads/server-http-2-configuration.61416/
So first off: I created a keystore file with the keytool.
Main.
B4X:
'Non-UI application (console / server application)
#Region Project Attributes
#CommandLineArgs:
#MergeLibraries: True
#End Region
Sub Process_Globals
Public srvr As Server
End Sub
Private Sub ConfigureSSL (SslPort As Int)
'example of SSL connector configuration
Dim ssl As SslConfiguration
ssl.Initialize
ssl.SetKeyStorePath(File.DirApp, "testing1.keystore") 'path to keystore file
ssl.KeyStorePassword = "123456"
ssl.KeyManagerPassword = "654321"
srvr.SetSslConfiguration(ssl, SslPort)
'add filter to redirect all traffic from http to https (optional)
srvr.AddFilter("/*", "HttpsFilter", False)
End Sub
Sub AppStart (Args() As String)
srvr.Initialize("")
srvr.Port = 8080
ConfigureSSL(8443)
srvr.Start
StartMessageLoop
End Sub
'Return true to allow the default exceptions handler to handle the uncaught exception.
Sub Application_Error (Error As Exception, StackTrace As String) As Boolean
Return True
End Sub
HttpsFilter
B4X:
'Filter class
Sub Class_Globals
End Sub
Public Sub Initialize
End Sub
'Return True to allow the request to proceed.
Public Sub Filter(req As ServletRequest, resp As ServletResponse) As Boolean
If req.Secure Then
Return True
Else
resp.SendRedirect(req.FullRequestURI.Replace("http:", "https:") _
.Replace(Main.srvr.Port, Main.srvr.SslPort))
Return False
End If
End Sub
I'm getting a warning about testing1.keystore is not used, and the error i'm getting is:
B4X:
java.lang.IllegalStateException: no valid keystore
Http2 example: Made a keystore file with both passwords set to 123456, named keystore.
B4X:
'Non-UI application (console / server application)
#Region Project Attributes
#CommandLineArgs:
#MergeLibraries: True
#VirtualMachineArgs: -Xbootclasspath/p:alpn-boot-8.1.11.v20170118.jar
#End Region
Sub Process_Globals
Public srvr As Server
End Sub
Sub AppStart (Args() As String)
srvr.Initialize("")
srvr.AddHandler("/test", "Test", False)
srvr.Port = 51041 'non ssl
ConfigureSSL(51042)
srvr.Http2Enabled = True
srvr.Start
StartMessageLoop
End Sub
Private Sub ConfigureSSL (SslPort As Int)
'example of SSL connector configuration
Dim ssl As SslConfiguration
ssl.Initialize
ssl.SetKeyStorePath(File.DirApp, "keystore") 'path to keystore file
ssl.KeyStorePassword = "123456"
ssl.KeyManagerPassword = "123456"
srvr.SetSslConfiguration(ssl, SslPort)
End Sub
My Java version is:
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
Error:
B4X:
Waiting for debugger to connect...
Program started.
2017-08-25 08:45:44.472:INFO::main: Logging initialized @600ms to org.eclipse.jetty.util.log.StdErrLog
Error occurred on line: 18
java.lang.RuntimeException: ALPN is not configured properly (required by HTTP2)
at anywheresoftware.b4j.object.ServerWrapper.Start(ServerWrapper.java:122)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at anywheresoftware.b4a.shell.Shell.runVoidMethod(Shell.java:657)
at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:234)
at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:159)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:90)
at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:93)
at anywheresoftware.b4a.BA.raiseEvent(BA.java:77)
at b4j.example.main.main(main.java:29)