For educational reasons I've decided to create my own CA. Here is what I learned.
Lets get some context first.
<?xml version="1.0"?> | |
<DslCpeConfig> | |
<InternetGatewayDevice> | |
<DeviceSummary val="InternetGatewayDevice:1.1[](Baseline:1, EthernetLAN:1)" /> | |
<LANDeviceNumberOfEntries val=2 /> | |
<WANDeviceNumberOfEntries val=3 /> | |
<DeviceInfo> | |
<ManufacturerOUI val=F8D111 /> | |
<SerialNumber val=0000000000000 /> | |
<HardwareVersion val="Archer C5v v1 00000000" /> |
var mediaJSON = { "categories" : [ { "name" : "Movies", | |
"videos" : [ | |
{ "description" : "Big Buck Bunny tells the story of a giant rabbit with a heart bigger than himself. When one sunny day three rodents rudely harass him, something snaps... and the rabbit ain't no bunny anymore! In the typical cartoon tradition he prepares the nasty rodents a comical revenge.\n\nLicensed under the Creative Commons Attribution license\nhttp://www.bigbuckbunny.org", | |
"sources" : [ "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4" ], | |
"subtitle" : "By Blender Foundation", | |
"thumb" : "images/BigBuckBunny.jpg", | |
"title" : "Big Buck Bunny" | |
}, | |
{ "description" : "The first Blender Open Movie from 2006", | |
"sources" : [ "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4" ], |
uint16_t udp_checksum(struct udphdr *p_udp_header, size_t len, uint32_t src_addr, uint32_t dest_addr) | |
{ | |
const uint16_t *buf = (const uint16_t*)p_udp_header; | |
uint16_t *ip_src = (void*)&src_addr, *ip_dst = (void*)&dest_addr; | |
uint32_t sum; | |
size_t length = len; | |
// Calculate the sum | |
sum = 0; | |
while (len > 1) |
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- | |
vim: set autoindent expandtab shiftwidth=2 softtabstop=2 tabstop=2: */ | |
#include <stdio.h> | |
#include <string.h> | |
#include <stdlib.h> | |
#include <unistd.h> | |
#include <getopt.h> | |
#include <sys/types.h> | |
#include <sys/socket.h> |
/* | |
* This program is free software: you can redistribute it and/or modify | |
* it under the terms of the GNU General Public License as published by | |
* the Free Software Foundation, either version 3 of the License, or | |
* (at your option) any later version. | |
*/ | |
#include <arpa/inet.h> | |
#include <linux/if_packet.h> | |
#include <stdio.h> |
<?xml version="1.0" encoding="utf-8"?> | |
<Theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> | |
<ThemeColorType>Dark</ThemeColorType> | |
<Formats> | |
<Entry Key="CodinionCSharpNamespaceClassifier"> | |
<Format IsEnabled="true"> | |
<ClassifierName>CodinionCSharpNamespaceClassifier</ClassifierName> | |
<Color>#FFADD8E6</Color> | |
<Decorations /> | |
</Format> |
Where $ip and $port are your MSI Afterburner Remote Server's IP address and port:
MSIAfterburner
as the username.Profit! You'll get an XML file that looks something like the attached xml-example.xml
.
There are two main modes to run the Let's Encrypt client (called Certbot
):
Webroot is better because it doesn't need to replace Nginx (to bind to port 80).
In the following, we're setting up mydomain.com
.
HTML is served from /var/www/mydomain
, and challenges are served from /var/www/letsencrypt
.