Standalone Web SSL...

It should match the platform that the web app is running on.

Great news :slight_smile:

Also thanks to Lee Page of the ’ is not verified ’ clan for the dummy certificate, it worked perfectly :slight_smile:

I got it working! Thanks for your patience and assistance.

However, on one application it works fine on the normal bound port, but gives the following error when using the secure port: (first screen (login) worked fine - this is going into a “main” screen)

(truncated because it was too long)

Could not execute returned javascript: toolbar is not a constructor
Source: new textlabel(‘NgCLPopY’,[‘TextChanged’]);
Xojo.controls[‘NgCLPopY’].setEnabled(true);
Xojo.controls[‘NgCLPopY’].setMultiline(true);
new button(‘XhVx2CM2’,[‘Action’]);
Xojo.controls[‘XhVx2CM2’].setEnabled(true);
new button(‘VLUrGoFT’,[‘Action’]);
Xojo.controls[‘VLUrGoFT’].setEnabled(true);
new button(‘RXcXvcvH’,[‘Action’]);
Xojo.controls[‘RXcXvcvH’].setEnabled(true);
new dialog(‘NqtLOWic’,[‘Dismissed’]);
Xojo.controls[‘NqtLOWic’].setEnabled(true);
Xojo.controls[‘NqtLOWic’].minWidth = 0;
Xojo.controls[‘NqtLOWic’].minHeight = 0;
new toolbar(‘T2ZHnPMO’,[‘ButtonAction’,‘MenuAction’]);
Xojo.controls[‘T2ZHnPMO’].setEnabled(true);
Xojo.controls[‘T2ZHnPMO’].vertical = false;
Xojo.controls[‘T2ZHnPMO’].items = { File: { name: “File”,menu: “Unjd53wcgr”,enabled: true,toggled: false,type: “menu” },Individual: { name: “Individual”,menu: “U8NgzFH5mw”,enabled: true,toggled: false,type: “menu” },ReportMenu: { name: “ReportMenu”,menu: “”,enabled: true,toggled: false,type: “button” },Inventory: { name: “Inventory”,menu: “J8jDtS3hrE”,enabled: true,toggled: false,type: “menu” },Maintenance: { name: “Maintenance”,menu: “BterdpV6Tl”,enabled: true,toggled: false,type: “menu” },Security: { name: “Security”,menu: “Pwaxbf8GRn”,enabled: true,toggled: false,type: “menu” },ArkHelp: { name: “ArkHelp”,menu: “S3CxKBgQoo”,enabled: true,toggled: false,type: “menu” },FlexibleSpace1: { name: “FlexibleSpace1”,menu: “”,enabled: true,toggled: false,type: “flex” },all: [“File”,“Individual”,“ReportMenu”,“Inventory”,“Maintenance”,“Security”,“ArkHelp”,“FlexibleSpace1”] };
Xojo.controls[‘T2ZHnPMO’].styles = { ButtonDisabledStyle: null,ButtonStyle: null,ItemStyle: null,ToggledDisabledStyle: null,ToggledStyle: null };
Xojo.controls[‘T2ZHnPMO’].updateItemStyles();
Xojo.menus.create({ menuID: “Unjd53wcgr”, text: “”, enabled: true, children: [{ menuID: “LyGjzEICF1”, text: “Exit”, enabled: true, children: [] },{ menuID: “LgcaV1aB5p”, text: “-”, enabled: true, children: [] },{ menuID: “YbH5w4QOgV”, text: “Import Individual Information”, enabled: true, children: [] }] });
Xojo.menus.create({ menuID: “U8NgzFH5mw”, text: “”, enabled: true, children: [{ menuID: “FV24ew2rQ5”, text: “Check-in - Names only”, enabled: true, children: [] },{ menuID: “LejglBaNtO”, text: “Check-in with list”, enabled: true, children: [] },{ menuID: “WubbxEKMJy”, text: “Check-in (slowest)”, enabled: true, children: [] },{ menuID: “DknrYStyf8”, text: “Sections”, enabled: true, children: [] },{ menuID: “IM4RLkHBuY”, text: “Shares Spent”, enabled: true, children: [] },{ menuID: “Nk9N2tV581”, text: “Group Email/Labels”, enabled: true, children: [] },{ menuID: “Cha3oOIuTI”, text: “-”, enabled: true, children: [] },{ menuID: “Ywhs2Qb8mv”, text: “Additional Awards”, enabled: true, children: [] },{ menuID: “WP3kvlocpD”, text: “Group Points”, enabled: true, children: [] },{ menuID: “X1KtqWZ0Hu”, text: “Individual Points”, enabled: true, children: [] },{ menuID: “GhkWbSH1qh”, text: “Promote Clubbers”, enabled: true, children: [] },{ menuID: “FHcS6n58HK”, text: “-”, enabled: true, children: [] },{ menuID: “IEmwC1mNv6”, text: “Reassign Points”, enabled: true, children: [] },{ menuID: “OPFQVnV8bF”, text: “Book Award Exceptions”, enabled: true, children: [] },{ menuID: “SaTfnWqK9M”, text: “-”, enabled: true, children: [] },{ menuID: “OEdQr7Qx6b”, text: “Delete current ARK individual”, enabled: true, children: [] }] });
Xojo.menus.create({ menuID: “J8jDtS3hrE”, text: “”, enabled: true, children: [{ menuID: “JJTumuXyw2”, text: “Order Entry”, enabled: true, children: [] },{ menuID: “NrWdhwWER6”, text: “Inventory Entry”, enabled: true, children: [] },{ menuID: “MGpnjmWD6b”, text: “Payment Entry”, enabled: true, children: [] },{ menuID: “WFe9nX5KX0”, text: “Distribute Awards”, enabled: true, children: [] }] });
Xojo.menus.create({ menuID: “BterdpV6Tl”, text: “”, enabled: true, children: [{ menuID: “TD7RXh3iKU”, text: “Options”, enabled: true, children: [] },{ menuID: “HtRWrPPohS”, text: “Group”, enabled: true, children: [] },{ menuID: “J4uPV0lRwH”, text: “Group Type”, enabled: true, children: [] },{ menuID: “K8uEj81T0r”, text: “Custom Field Definition”, enabled: true, children: [] },{ menuID: “HhIvNimhdd”, text: “Custom Field Choices”, enabled: true, children: [] },{ menuID: “UwtRNYFaiu”, text: “Session Fields”, enabled: true, children: [] },{ menuID: “WXPhUo2xLy”, text: “Calendar Setup”, enabled: true, children: [] },{ menuID: “FkhalCbKaG”, text: “Report Definition”, enabled: true, children: [] },{ menuID: “U2ReYYv64j”, text: “-”, enabled: true, children: [] },{ menuID: “ELlqYil943”, text: “Team Group Color”, enabled: true, children: [] },{ menuID: “FHkzdCnMHO”, text: “Team Group Club”, enabled: true, children: [] },{ menuID: “SCvlH9gv5r”, text: “Award Definition”, enabled: true, children: [] },{ menuID: “OTWRF8NgWV”, text: “Additional Award Definition”, enabled: true, children: [] },{ menuID: “SGe3RvKKdn”, text: “Email SMTP Settings”, enabled: true, children: [] },{ menuID: “JEKBBRrLsK”, text: “Award Inventory Link”, enabled: true, children: [] }] });
Xojo.menus.create({ menuID: “Pwaxbf8GRn”, text: “”, enabled: true, children: [{ menuID: “L5sS0ErTqj”, text: “User Administration”, enabled: true, children: [] },{ menuID: “XCQZrIZX0a”, text: “Reports by User”, enabled: true, children: [] },{ menuID: “SeJTEpDKPb”, text: “Clubs by User”, enabled: true, children: [] },{ menuID: “Pxb8RnM2ZZ”, text: “Groups by User”, enabled: true, children: [] },{ menuID: “NqTdNzIn9z”, text: “Window Security”, enabled: true, children: [] },{ menuID: “IsHFWPY1aT”, text: “Change Password”, enabled: true, children: [] }] });
Xojo.menus.create({ menuID: “S3CxKBgQoo”, text: “”, enabled: true, children: [{ menuID: “Ung4Jq5V46”, text: “About”, enabled: true, children: [] },{ menuID: “TXkvtDWCdY”, text: “Ark Manual”, enabled: true, children: [] },{ menuID: “Mhs4ZNYPU1”, text: “Email ARK Support”, enabled: true, children: [] },{ menuID: “BgD51ufybl”, text: “Subscription Services Webpage”, enabled: true, children: [] }] });
new imageview(‘NCq8IrmV’,[‘MouseDown’]);
Xojo.controls[‘NCq8IrmV’].setEnabled(true);
Xojo.input.install(Xojo.controls[‘NCq8IrmV’].object());
new button(‘AHMTdPYC’,[‘GotFocus’,‘Action’]);
Xojo.controls[‘AHMTdPYC’].setEnabled(true);
new textlabel(‘SZyB8Du3’,[‘MouseUp’,‘TextChanged’]);
Xojo.controls[‘SZyB8Du3’].setEnabled(true);
Xojo.controls[‘SZyB8Du3’].shouldBecomeVisible = false;
Xojo.controls[‘SZyB8Du3’].setMultiline(true);
new textcontrol(‘CeU3rZmM’,[‘GotFocus’,‘LostFocus’,‘TextChanged’]);
Xojo.controls[‘CeU3rZmM’].setEnabled(true);
Xojo.controls[‘CeU3rZmM’].shouldBecomeVisible = false;
new button(‘WoAeOpOc’,[‘GotFocus’,‘Action’]);
Xojo.controls[‘WoAeOpOc’].setEnabled(true);
new textlabel(‘IDG02vcv’,[‘TextChanged’]);
Xojo.controls[‘IDG02vcv’].setEnabled(true);
new dialog(‘RjYacBNn’,[]);
Xojo.controls[‘RjYacBNn’].setEnabled(true);
Xojo.controls[‘RjYacBNn’].minWidth = 0;
Xojo.controls[‘RjYacBNn’].minHeight = 0;
new textlabel(‘PGqd7sXO’,[‘TextChanged’]);
Xojo.controls[‘PGqd7sXO’].setEnabled(true);
new textcontrol(‘P8D0fbg6’,[‘GotFocus’,‘LostFocus’,‘TextChanged’]);
Xojo.controls[‘P8D0fbg6’].setEnabled(true);
new textlabel(‘JaacHCt5’,[‘TextChanged’]);
Xojo.controls[‘JaacHCt5’].setEnabled(true);
new textcontrol(‘Dd1rc9XT’,[‘GotFocus’,‘LostFocus’,‘TextChanged’]);
Xojo.con

Would it be a problem if our SSL key has a passphrase?

It would. We currently don’t have support for that.

Darn it :confused:

File a feature request.

WE Standalone with SSL using a Key that has a passphrase
<https://xojo.com/issue/33639>

@Albin Kiland - I just attached a project to that case. Please download and modify it as specified in the case and let me know if that works for you. Using the passphrase is dependent on whether or not the underlying SSLSocket works and I don’t have a certificate with a password to test with at the moment.

I’ll look at it as soon as I can!

This may help you to remove the pass phrase from the private key. It worked for me.
http://sycure.wordpress.com/2008/05/15/tips-using-openssl-to-extract-private-key-pem-file-from-pfx-personal-information-exchange/

Thanks Ian, but I don’t want to remove it. It adds a little security.
The only down side with a pass phrase is that it needs to be entered every time the server or apache is restarted (that’s the added security I guess).

The password is so you can transmit it over the internet without worry that someone will grab it and use it, but in my experience, most people strip the password off once it gets to the server where it’s going to be used.

Thanks for the blog. I created a self certificate & key on my mac, uploaded it to my el cheapo vps and it worked as expected on the test bed. Got the expected self cert warnings but was easy as pie. Real thing when I’m ready :slight_smile:

Would require the SSL port to be specified in the IDE.

This is important because for Windows, you can not add parameters (ie --secureport) when creating a service (to my knowledge). You can then add parameters in the dialog of the service, but they are not preserved during a reboot. :frowning:

When Windows restarts, it does not work, because the port is lost.

(Xojo: Account Login)>]<https://xojo.com/issue/35255>

as workaround, Task Scheduler (Windows) is quite effective: it can launch a program at boot time (even if no session is started) and keep the parameters (–secureport …) but it does not replace a service…

Advanced Installer creates services with parameters that are preserved. We use it to install all of our Windows apps.

From the command line you can use:

sc create ServiceName binpath= ""PathWithSpacesToEXE" --port=PortNumber --secureport=SecurePortNumber” start= auto

Just replace the bold placeholders. The backslash followed by a double quote is an escaped double quote so an executable path with spaces (e.g. C:\Program Files (x86)\App Name\App.exe) can be used.

Here’s a real world example for our new Web App that’s a Dynamic DNS Updater:

sc create xProDDNS binpath= "\"C:\\Program Files (x86)\\xProDDNS\\Service\\xProDDNSd.exe\" --port=8008 --secureport=9009” start= auto

It would still be nice to have a way to set the secure port in the IDE. Hopefully it will get some attention in 2014r3. :slight_smile:

Great, thank you Frederick!

[quote=90471:@Albin Kiland]WE Standalone with SSL using a Key that has a passphrase
<https://xojo.com/issue/33639>[/quote]

Thanks for mentioning this Albin. I have been working on a project and have been stuck on this issue for 2-weeks.

Well done.

It would be nice if the app open event of a web app let us set up the ports the app should use for HTTP and HTTPS. It would also help as we could dynamically set it based on conditions. Possibly set the SSL cert stuff here too.