We're going to be looking at how to create a server setup file that doesn't trigger any prompts that aren't user friendly. This setup file will contain another signed file that will launch a basic web server. The setup file will create the server file and a firewall rule for the server file. We will be building two files (`setup.go` and `server.go`) separately .
This will create a configuration file named `versioninfo.json` in the current directory. There are three things you will want to edit: 1. The version of the application, 2. The "publisher" or company name and 3. The product name.
![](versioninfo.png)
Near the top of the file, you will see `FileVersion` and `ProductVersion`.
You can set normal major, minor, patch and build versions for those values. The `FileVersion` is the version of the file and `ProductVersion` is the version of the application as a whole. You can most likely use the same version for both unless you're doing something unusual. You will set the same values again under `StringFileInfo`.
Next, you can set the "publisher name" by filling in the `CompanyName` value with the name of your organization.
Lastly, you can give your application a name, like "Go Web Server" under the `ProductName` value.
Grab the picture you want to use and go to: http://www.genfavicon.com/
Click on “Browse…” Select the picture you want to use, then click “Open”. Then click on the “Upload Image” button. Your image should pop up in the upper right hand corner. You will then need to click and drag on the little boxes around your image to get it to select the whole image properly. Below that, you should see “2 Cut & Preview”. Under this heading, you should be able to select a size. Select “48×48”. Then click “Capture & Preview”. You should then see an option just to the left of that saying “Download: favicon”. Save it as a `.ico` file. You can then open `versioninfo.json` and add that filename to the value for `IconPath`.
You need to create a Dun & Bradstreet listing to get an "organization" code-signing certificate: https://www.dandb.com/businessdirectory/products/ (this is free)
You can purchase a code-signing certificate here: https://cheapsslsecurity.com/comodo/codesigningcertificate.html
Select the number of years you want the certificate to be valid for (you'll pay per year). Add it to your cart. It'll add you for billing address and payment information. Then it will ask to you enter your business information and street address as well as the mailing address of the company. Then it will have you request a certificate. You must use the **exact same** browser to request and collect the certificate.
You can view the status of your order by going to your account: https://cheapsslsecurity.com/client/ordersummary.html
If you scroll down, you will see something like this:
![](codecert.png)
Click on the paper and magnifying glass on the right side to view the status of your order.
You should see:
![](codestatus.png)
Under "Order Status", it should either saying "Pending (Awaiting Validation)" or "Active". If your certificate is active, you are ready to follow these instructions to collect the certificate: https://cheapsslsecurity.com/downloads.aspx?ispdf=true&iscs=true&filenm=Comodo_Code_Signing_Collection_Guide.pdf
Please note that you will need to use the **exact same** browser to collect the certificate as the one you used to request it. The validation process will take 1-3 business days. If it takes longer than that, reach out to their support team.
You'll want to replace `signtool.exe` in the example below with a path to `signtool.exe` on your machine. It should look like `"C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64\signtool.exe"` but you may well have a different number for `10.0.18362.0`. Run the following in a command prompt:
This will create a folder named `static` with a file in it. You will then need to copy that folder to your `$GOPATH/src/` (usually `C:\Users\<Username>\go\src\`).
Refer back to the instructions on [How to Sign a File](#signing-the-file) to sign your setup file as well. Then you're done! Just run `setup.exe` wherever you want it will setup your server for you. If you ever more `server.exe`, you will need to run `setup.exe`again to setup a new firewall rule at a new location.
`SRCFILE` is the file you want to change your password on, `DSTFILE` is what the new file with the new password will be called. `ssp` is the password of the current file stored in a file. `dsp` is the password of the new file stored in a file. You will see something like this:
```
Importing keystore rootgroup.p12 to rootgroup2.p12...
Entry for alias the root group, llc’s sectigo limited id successfully imported.