Compare commits
	
		
			59 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| b5f0c30652 | |||
| 210a7877a0 | |||
| 8aadf6db41 | |||
| 8a873eeb1d | |||
| 059b63e5d0 | |||
| 513fb992c9 | |||
| 137990002a | |||
| 21d01a326c | |||
| 67294ae3eb | |||
| 6eb325186e | |||
| 5d4785ee19 | |||
| 0b50f7976f | |||
| 26a61da3a1 | |||
| ad288b1c95 | |||
| d5e6b4331f | |||
| d4bfc608a3 | |||
| 5a229ef27f | |||
| 506280f764 | |||
| 352e334b5d | |||
| f56dafad5d | |||
| 2ca4c984f8 | |||
| 11020cbf27 | |||
| da5b9f59c3 | |||
| 82aac8a233 | |||
| aa0444646b | |||
| 71de7e7b95 | |||
| fe849f426d | |||
| 51d10a57df | |||
| e236640098 | |||
| 8b6fddad75 | |||
| a4c2da82c5 | |||
| 8a0ccfa55f | |||
| df964d76c6 | |||
| 136c9c06fe | |||
| 2fb775a822 | |||
| c66f92d506 | |||
| cda26c98b5 | |||
| 8a0e582962 | |||
| b1328d938d | |||
| 613f1ba75e | |||
| 102829c852 | |||
| 1b8c2d99a2 | |||
| fad0739f68 | |||
| 1c39971be5 | |||
| 1dc1cae50a | |||
| 174c69234a | |||
| b416813a44 | |||
| fe530836c7 | |||
| 43f0fe9faa | |||
| c7bddfdec9 | |||
| 34acb707ac | |||
| 7af2671993 | |||
| 5db9c2010f | |||
| af887f27b9 | |||
| f17e8a4183 | |||
| dec3229340 | |||
| 7ce3adacb6 | |||
| 60b082788f | |||
| 426e28d1b2 | 
							
								
								
									
										4
									
								
								.prettierrc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								.prettierrc
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "trailingComma": "none",
 | 
				
			||||||
 | 
					  "useTabs": true
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										15
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								README.md
									
									
									
									
									
								
							@ -1,10 +1,8 @@
 | 
				
			|||||||
Greenlock™ in your Browser
 | 
					# Greenlock™ in your Browser
 | 
				
			||||||
=========================
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
Taking greenlock™ (Let's Encrypt v2 / ACME client) where it's never been before: Your browser!
 | 
					Taking greenlock™ (Let's Encrypt v2 / ACME client) where it's never been before: Your browser!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Official Site
 | 
					# Official Site
 | 
				
			||||||
=============
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
This app is available at <https://greenlock.domains>.
 | 
					This app is available at <https://greenlock.domains>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -14,14 +12,12 @@ If it doesn't, please open an issue to let us know why.
 | 
				
			|||||||
We'd much rather improve the app than have a hundred different versions running in the wild.
 | 
					We'd much rather improve the app than have a hundred different versions running in the wild.
 | 
				
			||||||
However, in keeping to our values we've released the source for others to inspect, improve, and modify.
 | 
					However, in keeping to our values we've released the source for others to inspect, improve, and modify.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Trademark Notice
 | 
					# Trademark Notice
 | 
				
			||||||
================
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
Greenlock™ is our trademark. If you do host your own copy of this app,
 | 
					Greenlock™ is our trademark. If you do host your own copy of this app,
 | 
				
			||||||
please do provide attribution, but please also use your branding.
 | 
					please do provide attribution, but please also use your branding.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Install
 | 
					# Install
 | 
				
			||||||
=======
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
git clone ssh://gitea@git.coolaj86.com:22042/coolaj86/greenlock.html.git
 | 
					git clone ssh://gitea@git.coolaj86.com:22042/coolaj86/greenlock.html.git
 | 
				
			||||||
@ -30,8 +26,7 @@ pushd greenlock.html/
 | 
				
			|||||||
popd
 | 
					popd
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Usage
 | 
					# Usage
 | 
				
			||||||
=====
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
Simply host from your webserver.
 | 
					Simply host from your webserver.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										778
									
								
								app/index.html
									
									
									
									
									
								
							
							
						
						
									
										778
									
								
								app/index.html
									
									
									
									
									
								
							@ -1,262 +1,403 @@
 | 
				
			|||||||
 | 
					<!DOCTYPE html>
 | 
				
			||||||
<html>
 | 
					<html>
 | 
				
			||||||
  <head>
 | 
						<head>
 | 
				
			||||||
    <title>Greenlock™</title>
 | 
							<title>Greenlock™</title>
 | 
				
			||||||
    <meta property="og:image" content="https://greenlock.domains/img/greenlock-mark-400x400.png" />
 | 
							<meta
 | 
				
			||||||
    <style>
 | 
								property="og:image"
 | 
				
			||||||
      @font-face {
 | 
								content="https://greenlock.domains/img/greenlock-mark-400x400.png"
 | 
				
			||||||
        font-family: 'Source Sans Pro';
 | 
							/>
 | 
				
			||||||
        font-style: normal;
 | 
							<style>
 | 
				
			||||||
        font-display: block;
 | 
								@font-face {
 | 
				
			||||||
        font-weight: 400;
 | 
									font-family: "Source Sans Pro";
 | 
				
			||||||
        src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url(./fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2) format('woff2');
 | 
									font-style: normal;
 | 
				
			||||||
        unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
 | 
									font-display: block;
 | 
				
			||||||
      }
 | 
									font-weight: 400;
 | 
				
			||||||
      @font-face {
 | 
									src: local("Source Sans Pro Regular"), local("SourceSansPro-Regular"),
 | 
				
			||||||
        font-family: 'Source Sans Pro';
 | 
										url(./fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2) format("woff2");
 | 
				
			||||||
        font-style: normal;
 | 
									unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
 | 
				
			||||||
        font-weight: 700;
 | 
										U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
 | 
				
			||||||
        font-display: block;
 | 
										U+2212, U+2215, U+FEFF, U+FFFD;
 | 
				
			||||||
        src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url(./fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2) format('woff2');
 | 
								}
 | 
				
			||||||
        unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
 | 
								@font-face {
 | 
				
			||||||
      }
 | 
									font-family: "Source Sans Pro";
 | 
				
			||||||
      @font-face {
 | 
									font-style: normal;
 | 
				
			||||||
        font-family: 'Source Code Pro';
 | 
									font-weight: 700;
 | 
				
			||||||
        font-style: normal;
 | 
									font-display: block;
 | 
				
			||||||
        font-weight: 400;
 | 
									src: local("Source Sans Pro Bold"), local("SourceSansPro-Bold"),
 | 
				
			||||||
        src: local('Source Code Pro'), local('SourceCodePro-Regular'), url(./fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPevW.woff2) format('woff2');
 | 
										url(./fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2)
 | 
				
			||||||
        unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
 | 
											format("woff2");
 | 
				
			||||||
      }
 | 
									unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
 | 
				
			||||||
    </style>
 | 
										U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
 | 
				
			||||||
 | 
										U+2212, U+2215, U+FEFF, U+FFFD;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								@font-face {
 | 
				
			||||||
 | 
									font-family: "Source Code Pro";
 | 
				
			||||||
 | 
									font-style: normal;
 | 
				
			||||||
 | 
									font-weight: 400;
 | 
				
			||||||
 | 
									src: local("Source Code Pro"), local("SourceCodePro-Regular"),
 | 
				
			||||||
 | 
										url(./fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPevW.woff2) format("woff2");
 | 
				
			||||||
 | 
									unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
 | 
				
			||||||
 | 
										U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
 | 
				
			||||||
 | 
										U+2212, U+2215, U+FEFF, U+FFFD;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							</style>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <link href="styles/main.css" rel="stylesheet">
 | 
							<link href="styles/main.css" rel="stylesheet" />
 | 
				
			||||||
    <link rel="preload" href="./fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2" as="font" crossorigin="anonymous">
 | 
							<link
 | 
				
			||||||
    <link rel="preload" href="./fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" as="font" crossorigin="anonymous">
 | 
								rel="preload"
 | 
				
			||||||
 | 
								href="./fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2"
 | 
				
			||||||
 | 
								as="font"
 | 
				
			||||||
 | 
								crossorigin="anonymous"
 | 
				
			||||||
 | 
							/>
 | 
				
			||||||
 | 
							<link
 | 
				
			||||||
 | 
								rel="preload"
 | 
				
			||||||
 | 
								href="./fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2"
 | 
				
			||||||
 | 
								as="font"
 | 
				
			||||||
 | 
								crossorigin="anonymous"
 | 
				
			||||||
 | 
							/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <link rel="preload" href="./fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPevW.woff2" as="font" crossorigin="anonymous">
 | 
							<link
 | 
				
			||||||
    <link rel="preload" href="./js/bluecrypt-acme.js" as="script">
 | 
								rel="preload"
 | 
				
			||||||
    <link rel="preload" href="./js/greenlock.js" as="script">
 | 
								href="./fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPevW.woff2"
 | 
				
			||||||
 | 
								as="font"
 | 
				
			||||||
 | 
								crossorigin="anonymous"
 | 
				
			||||||
 | 
							/>
 | 
				
			||||||
 | 
							<link rel="preload" href="./js/bluecrypt-acme.js" as="script" />
 | 
				
			||||||
 | 
							<link rel="preload" href="./js/greenlock.js" as="script" />
 | 
				
			||||||
 | 
						</head>
 | 
				
			||||||
 | 
						<body hidden>
 | 
				
			||||||
 | 
							<!-- let's define our SVG that we will reuse -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  </head>
 | 
							<svg
 | 
				
			||||||
  <body hidden>
 | 
								xmlns="http://www.w3.org/2000/svg"
 | 
				
			||||||
    <!-- let's define our SVG that we will reuse -->
 | 
								width="0"
 | 
				
			||||||
 | 
								height="0"
 | 
				
			||||||
    <svg xmlns="http://www.w3.org/2000/svg" width="0" height="0" viewBox="0 0 24 24">
 | 
								viewbox="0 0 24 24"
 | 
				
			||||||
      <defs>
 | 
							>
 | 
				
			||||||
        <g id="svg-check">
 | 
								<defs>
 | 
				
			||||||
          <path fill="none" d="M0 0h24v24H0z"/>
 | 
									<g id="svg-check">
 | 
				
			||||||
          <path d="M9 16.2L4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2z"/>
 | 
										<path fill="none" d="M0 0h24v24H0z" />
 | 
				
			||||||
        </g>
 | 
										<path d="M9 16.2L4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2z" />
 | 
				
			||||||
        <g id="svg-checked">
 | 
									</g>
 | 
				
			||||||
          <path d="M0 0h24v24H0z" fill="none"/>
 | 
									<g id="svg-checked">
 | 
				
			||||||
          <path d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/>
 | 
										<path d="M0 0h24v24H0z" fill="none" />
 | 
				
			||||||
        </g>
 | 
										<path
 | 
				
			||||||
        <g id="svg-unchecked">
 | 
											d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"
 | 
				
			||||||
          <path d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"/>
 | 
										/>
 | 
				
			||||||
          <path d="M0 0h24v24H0z" fill="none"/>
 | 
									</g>
 | 
				
			||||||
        </g>
 | 
									<g id="svg-unchecked">
 | 
				
			||||||
        <g id="svg-download">
 | 
										<path
 | 
				
			||||||
          <path d="M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z"/>
 | 
											d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"
 | 
				
			||||||
          <path d="M0 0h24v24H0z" fill="none"/>
 | 
										/>
 | 
				
			||||||
        </g>
 | 
										<path d="M0 0h24v24H0z" fill="none" />
 | 
				
			||||||
      </defs>
 | 
									</g>
 | 
				
			||||||
    </svg>
 | 
									<g id="svg-download">
 | 
				
			||||||
    <div class="column-container wide">
 | 
										<path d="M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z" />
 | 
				
			||||||
      <div class="header-row column-row">
 | 
										<path d="M0 0h24v24H0z" fill="none" />
 | 
				
			||||||
        <div id="js-progress-bar" class="progress-bar">
 | 
									</g>
 | 
				
			||||||
 | 
								</defs>
 | 
				
			||||||
 | 
							</svg>
 | 
				
			||||||
 | 
							<div class="column-container wide">
 | 
				
			||||||
 | 
								<div class="header-row column-row">
 | 
				
			||||||
 | 
									<div id="js-progress-bar" class="progress-bar">
 | 
				
			||||||
 | 
										<div class="progress-bar-step">
 | 
				
			||||||
 | 
											<div class="circle">
 | 
				
			||||||
 | 
												<svg
 | 
				
			||||||
 | 
													display="none"
 | 
				
			||||||
 | 
													xmlns="http://www.w3.org/2000/svg"
 | 
				
			||||||
 | 
													viewbox="0 0 24 24"
 | 
				
			||||||
 | 
												>
 | 
				
			||||||
 | 
													<use xlink:href="#svg-check"></use>
 | 
				
			||||||
 | 
												</svg>
 | 
				
			||||||
 | 
											</div>
 | 
				
			||||||
 | 
											<div class="progress-step-label"><div>Details</div></div>
 | 
				
			||||||
 | 
										</div>
 | 
				
			||||||
 | 
										<div class="progress-bar-step">
 | 
				
			||||||
 | 
											<div class="circle">
 | 
				
			||||||
 | 
												<svg
 | 
				
			||||||
 | 
													display="none"
 | 
				
			||||||
 | 
													xmlns="http://www.w3.org/2000/svg"
 | 
				
			||||||
 | 
													viewbox="0 0 24 24"
 | 
				
			||||||
 | 
												>
 | 
				
			||||||
 | 
													<use xlink:href="#svg-check"></use>
 | 
				
			||||||
 | 
												</svg>
 | 
				
			||||||
 | 
											</div>
 | 
				
			||||||
 | 
											<div class="progress-step-label"><div>Verify domain</div></div>
 | 
				
			||||||
 | 
										</div>
 | 
				
			||||||
 | 
										<div class="progress-bar-step">
 | 
				
			||||||
 | 
											<div class="circle">
 | 
				
			||||||
 | 
												<svg
 | 
				
			||||||
 | 
													display="none"
 | 
				
			||||||
 | 
													xmlns="http://www.w3.org/2000/svg"
 | 
				
			||||||
 | 
													viewbox="0 0 24 24"
 | 
				
			||||||
 | 
												>
 | 
				
			||||||
 | 
													<use xlink:href="#svg-check"></use>
 | 
				
			||||||
 | 
												</svg>
 | 
				
			||||||
 | 
											</div>
 | 
				
			||||||
 | 
											<div class="progress-step-label">
 | 
				
			||||||
 | 
												<div>Install certificates</div>
 | 
				
			||||||
 | 
											</div>
 | 
				
			||||||
 | 
										</div>
 | 
				
			||||||
 | 
										<!-- hide until the steps are all updated
 | 
				
			||||||
          <div class="progress-bar-step">
 | 
					          <div class="progress-bar-step">
 | 
				
			||||||
            <div class="circle">
 | 
					            <div class="circle">
 | 
				
			||||||
              <svg display="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
 | 
					              <svg display="none" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
 | 
				
			||||||
                <use xlink:href="#svg-check"></use>
 | 
					 | 
				
			||||||
              </svg>
 | 
					 | 
				
			||||||
            </div>
 | 
					 | 
				
			||||||
            <div class="progress-step-label"><div>Details</div></div>
 | 
					 | 
				
			||||||
          </div>
 | 
					 | 
				
			||||||
          <div class="progress-bar-step">
 | 
					 | 
				
			||||||
            <div class="circle">
 | 
					 | 
				
			||||||
              <svg display="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
 | 
					 | 
				
			||||||
                <use xlink:href="#svg-check"></use>
 | 
					 | 
				
			||||||
              </svg>
 | 
					 | 
				
			||||||
            </div>
 | 
					 | 
				
			||||||
            <div class="progress-step-label"><div>Verify domain</div></div>
 | 
					 | 
				
			||||||
          </div>
 | 
					 | 
				
			||||||
          <div class="progress-bar-step">
 | 
					 | 
				
			||||||
            <div class="circle">
 | 
					 | 
				
			||||||
              <svg display="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
 | 
					 | 
				
			||||||
                <use xlink:href="#svg-check"></use>
 | 
					 | 
				
			||||||
              </svg>
 | 
					 | 
				
			||||||
            </div>
 | 
					 | 
				
			||||||
            <div class="progress-step-label"><div>Install certificates</div></div>
 | 
					 | 
				
			||||||
          </div>
 | 
					 | 
				
			||||||
          <!-- hide until the steps are all updated
 | 
					 | 
				
			||||||
          <div class="progress-bar-step">
 | 
					 | 
				
			||||||
            <div class="circle">
 | 
					 | 
				
			||||||
              <svg display="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
 | 
					 | 
				
			||||||
                <use xlink:href="#svg-check"></use>
 | 
					                <use xlink:href="#svg-check"></use>
 | 
				
			||||||
              </svg>
 | 
					              </svg>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
            <div class="progress-step-label"><div>Done</div></div>
 | 
					            <div class="progress-step-label"><div>Done</div></div>
 | 
				
			||||||
          </div>
 | 
					          </div>
 | 
				
			||||||
          -->
 | 
					          -->
 | 
				
			||||||
        </div>
 | 
									</div>
 | 
				
			||||||
        <div class="greenlock-logo-badge"><img src="./img/greenlock-mark-400x400.png"></div>
 | 
									<div class="greenlock-logo-badge">
 | 
				
			||||||
        <div class="greenlock-name">Greenlock</div>
 | 
										<img src="./img/greenlock-mark-400x400.png" />
 | 
				
			||||||
      </div>
 | 
									</div>
 | 
				
			||||||
      <div class="column-row">
 | 
									<div class="greenlock-name">Greenlock</div>
 | 
				
			||||||
        <form class="js-acme-form js-acme-form-domains">
 | 
								</div>
 | 
				
			||||||
          <h1><label>What's your domain?</label></h1>
 | 
								<div class="column-row">
 | 
				
			||||||
          <h4>Certificates are valid for 90 days. Renewal is free :)</h4>
 | 
									<form class="js-acme-form js-acme-form-domains">
 | 
				
			||||||
          <input class="js-acme-domains" type="text" placeholder="example.com,*.example.com" required>
 | 
										<h1><label>What's your domain?</label></h1>
 | 
				
			||||||
          <br>
 | 
										<h4>Certificates are valid for 90 days. Renewal is free :)</h4>
 | 
				
			||||||
          <button type="submit">Next</button>
 | 
										<input
 | 
				
			||||||
 | 
											class="js-acme-domains"
 | 
				
			||||||
 | 
											type="text"
 | 
				
			||||||
 | 
											placeholder="example.com,*.example.com"
 | 
				
			||||||
 | 
											required
 | 
				
			||||||
 | 
										/>
 | 
				
			||||||
 | 
										<br />
 | 
				
			||||||
 | 
										<button type="submit">Next</button>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          <br>
 | 
										<br />
 | 
				
			||||||
          <br>
 | 
										<br />
 | 
				
			||||||
          <br>
 | 
										<br />
 | 
				
			||||||
          <label><input class="js-acme-api-type" name="acme-api-type" type="radio" value="v02" checked required>
 | 
										<label
 | 
				
			||||||
            Production</label>
 | 
											><input
 | 
				
			||||||
          <label><input class="js-acme-api-type" name="acme-api-type" type="radio" value="staging-v02" required>
 | 
												class="js-acme-api-type"
 | 
				
			||||||
            Testing</label>
 | 
												name="acme-api-type"
 | 
				
			||||||
          <br>
 | 
												type="radio"
 | 
				
			||||||
          <input class="js-acme-directory-url" type="url" placeholder="ACME directory url">
 | 
												value="v02"
 | 
				
			||||||
        </form>
 | 
												checked
 | 
				
			||||||
 | 
												required
 | 
				
			||||||
 | 
											/>
 | 
				
			||||||
 | 
											Production</label
 | 
				
			||||||
 | 
										>
 | 
				
			||||||
 | 
										<label
 | 
				
			||||||
 | 
											><input
 | 
				
			||||||
 | 
												class="js-acme-api-type"
 | 
				
			||||||
 | 
												name="acme-api-type"
 | 
				
			||||||
 | 
												type="radio"
 | 
				
			||||||
 | 
												value="staging-v02"
 | 
				
			||||||
 | 
												required
 | 
				
			||||||
 | 
											/>
 | 
				
			||||||
 | 
											Testing</label
 | 
				
			||||||
 | 
										>
 | 
				
			||||||
 | 
										<br />
 | 
				
			||||||
 | 
										<input
 | 
				
			||||||
 | 
											class="js-acme-directory-url"
 | 
				
			||||||
 | 
											type="url"
 | 
				
			||||||
 | 
											placeholder="ACME directory url"
 | 
				
			||||||
 | 
										/>
 | 
				
			||||||
 | 
									</form>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <!-- Step 2 Create Account -->
 | 
									<!-- Step 2 Create Account -->
 | 
				
			||||||
        <form class="js-acme-form js-acme-form-account">
 | 
									<form class="js-acme-form js-acme-form-account">
 | 
				
			||||||
          <h1><label>What's your email?</label></h1>
 | 
										<h1><label>What's your email?</label></h1>
 | 
				
			||||||
          <input class="js-acme-account-email acme-account-email" type="email" placeholder="john@doe.family" required>
 | 
										<input
 | 
				
			||||||
          <div class="checkbox-array">
 | 
											class="js-acme-account-email acme-account-email"
 | 
				
			||||||
            <label>
 | 
											type="email"
 | 
				
			||||||
              <input class="js-acme-account-tos" type="checkbox" required>
 | 
											placeholder="john@doe.family"
 | 
				
			||||||
              <svg class="icon-checked-box" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
 | 
											required
 | 
				
			||||||
                <use xlink:href="#svg-checked"></use>
 | 
										/>
 | 
				
			||||||
              </svg>
 | 
										<div class="checkbox-array">
 | 
				
			||||||
              <svg class="icon-unchecked-box"  xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
 | 
											<label>
 | 
				
			||||||
                <use xlink:href="#svg-unchecked"></use>
 | 
												<input class="js-acme-account-tos" type="checkbox" required />
 | 
				
			||||||
              </svg>
 | 
												<svg
 | 
				
			||||||
              Agree to  <a class="js-acme-tos-url" target="acme-tos">Let's Encrypt™ Terms of Service</a>?
 | 
													class="icon-checked-box"
 | 
				
			||||||
            </label>
 | 
													xmlns="http://www.w3.org/2000/svg"
 | 
				
			||||||
            <label>
 | 
													viewbox="0 0 24 24"
 | 
				
			||||||
              <input class="js-greenlock-account-tos" type="checkbox" required>
 | 
												>
 | 
				
			||||||
              <svg class="icon-checked-box" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
 | 
													<use xlink:href="#svg-checked"></use>
 | 
				
			||||||
                <use xlink:href="#svg-checked"></use>
 | 
												</svg>
 | 
				
			||||||
              </svg>
 | 
												<svg
 | 
				
			||||||
              <svg class="icon-unchecked-box" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
 | 
													class="icon-unchecked-box"
 | 
				
			||||||
                <use xlink:href="#svg-unchecked"></use>
 | 
													xmlns="http://www.w3.org/2000/svg"
 | 
				
			||||||
              </svg>
 | 
													viewbox="0 0 24 24"
 | 
				
			||||||
              Agree to  <a class="js-gl-tos" target="_blank" href="/legal/#terms">Greenlock™ Terms of Service</a>?
 | 
												>
 | 
				
			||||||
            </label>
 | 
													<use xlink:href="#svg-unchecked"></use>
 | 
				
			||||||
          </div>
 | 
												</svg>
 | 
				
			||||||
          <!--
 | 
												Agree to  <a class="js-acme-tos-url" target="acme-tos"
 | 
				
			||||||
 | 
													>Let's Encrypt™ Terms of Service</a
 | 
				
			||||||
 | 
												>?
 | 
				
			||||||
 | 
											</label>
 | 
				
			||||||
 | 
											<label>
 | 
				
			||||||
 | 
												<input
 | 
				
			||||||
 | 
													class="js-greenlock-account-tos"
 | 
				
			||||||
 | 
													type="checkbox"
 | 
				
			||||||
 | 
													required
 | 
				
			||||||
 | 
												/>
 | 
				
			||||||
 | 
												<svg
 | 
				
			||||||
 | 
													class="icon-checked-box"
 | 
				
			||||||
 | 
													xmlns="http://www.w3.org/2000/svg"
 | 
				
			||||||
 | 
													viewbox="0 0 24 24"
 | 
				
			||||||
 | 
												>
 | 
				
			||||||
 | 
													<use xlink:href="#svg-checked"></use>
 | 
				
			||||||
 | 
												</svg>
 | 
				
			||||||
 | 
												<svg
 | 
				
			||||||
 | 
													class="icon-unchecked-box"
 | 
				
			||||||
 | 
													xmlns="http://www.w3.org/2000/svg"
 | 
				
			||||||
 | 
													viewbox="0 0 24 24"
 | 
				
			||||||
 | 
												>
 | 
				
			||||||
 | 
													<use xlink:href="#svg-unchecked"></use>
 | 
				
			||||||
 | 
												</svg>
 | 
				
			||||||
 | 
												Agree to  <a
 | 
				
			||||||
 | 
													class="js-gl-tos"
 | 
				
			||||||
 | 
													target="_blank"
 | 
				
			||||||
 | 
													href="/legal/#terms"
 | 
				
			||||||
 | 
													>Greenlock™ Terms of Service</a
 | 
				
			||||||
 | 
												>?
 | 
				
			||||||
 | 
											</label>
 | 
				
			||||||
 | 
										</div>
 | 
				
			||||||
 | 
										<!--
 | 
				
			||||||
          <a href="#">advanced (use existing account)</a>
 | 
					          <a href="#">advanced (use existing account)</a>
 | 
				
			||||||
          <br>
 | 
					          <br>
 | 
				
			||||||
          <br>
 | 
					          <br>
 | 
				
			||||||
          -->
 | 
					          -->
 | 
				
			||||||
          <button class="button-next js-account-next" type="submit">Next</button>
 | 
										<button class="button-next js-account-next" type="submit">
 | 
				
			||||||
          <div class="email-usage">
 | 
											Next
 | 
				
			||||||
            Why do we need your email?
 | 
										</button>
 | 
				
			||||||
            We link your SSL certificates to the email you use so that you'll
 | 
										<div class="email-usage">
 | 
				
			||||||
            be notified before the certificate expires and so you can manage
 | 
											Why do we need your email? We link your SSL certificates to the
 | 
				
			||||||
            your certificates in the future.
 | 
											email you use so that you'll be notified before the certificate
 | 
				
			||||||
          </div>
 | 
											expires and so you can manage your certificates in the future.
 | 
				
			||||||
        </form>
 | 
										</div>
 | 
				
			||||||
 | 
									</form>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <!-- Step 3 Set Challanges -->
 | 
									<!-- Step 3 Set Challanges -->
 | 
				
			||||||
        <form class="js-acme-form js-acme-form-challenges">
 | 
									<form class="js-acme-form js-acme-form-challenges">
 | 
				
			||||||
 | 
										<h1>Let's verify your domain</h1>
 | 
				
			||||||
 | 
										<div class="js-acme-challenges">
 | 
				
			||||||
 | 
											<div class="tabbed-selector">
 | 
				
			||||||
 | 
												<label>
 | 
				
			||||||
 | 
													<input
 | 
				
			||||||
 | 
														class="js-acme-challenge-type"
 | 
				
			||||||
 | 
														name="acme-challenge-type"
 | 
				
			||||||
 | 
														type="radio"
 | 
				
			||||||
 | 
														value="http-01"
 | 
				
			||||||
 | 
														checked
 | 
				
			||||||
 | 
														required
 | 
				
			||||||
 | 
													/>
 | 
				
			||||||
 | 
													File Upload
 | 
				
			||||||
 | 
													<div></div>
 | 
				
			||||||
 | 
												</label>
 | 
				
			||||||
 | 
												<label>
 | 
				
			||||||
 | 
													<input
 | 
				
			||||||
 | 
														class="js-acme-challenge-type"
 | 
				
			||||||
 | 
														name="acme-challenge-type"
 | 
				
			||||||
 | 
														type="radio"
 | 
				
			||||||
 | 
														value="dns-01"
 | 
				
			||||||
 | 
														required
 | 
				
			||||||
 | 
													/>
 | 
				
			||||||
 | 
													DNS Record
 | 
				
			||||||
 | 
													<div></div>
 | 
				
			||||||
 | 
												</label>
 | 
				
			||||||
 | 
											</div>
 | 
				
			||||||
 | 
											<div>
 | 
				
			||||||
 | 
												<div class="js-acme-verification-http-01">
 | 
				
			||||||
 | 
													<h3>Upload each file</h3>
 | 
				
			||||||
 | 
													<div class="js-acme-http">
 | 
				
			||||||
 | 
														<div class="http-verification-info file-preview">
 | 
				
			||||||
 | 
															<div class="paper-fold"></div>
 | 
				
			||||||
 | 
															<div>
 | 
				
			||||||
 | 
																<div class="file-ver-info-header">FILENAME</div>
 | 
				
			||||||
 | 
																<pre class="js-acme-ver-file-location">...loading</pre>
 | 
				
			||||||
 | 
															</div>
 | 
				
			||||||
 | 
															<hr />
 | 
				
			||||||
 | 
															<div>
 | 
				
			||||||
 | 
																<div class="file-ver-info-header">CONTENTS</div>
 | 
				
			||||||
 | 
																<pre class="js-acme-ver-content">...loading</pre>
 | 
				
			||||||
 | 
															</div>
 | 
				
			||||||
 | 
															<div class="download-file">
 | 
				
			||||||
 | 
																<svg
 | 
				
			||||||
 | 
																	class="mdicon icon-download"
 | 
				
			||||||
 | 
																	xmlns="http://www.w3.org/2000/svg"
 | 
				
			||||||
 | 
																	viewbox="0 0 24 24"
 | 
				
			||||||
 | 
																>
 | 
				
			||||||
 | 
																	<use xlink:href="#svg-download"></use>
 | 
				
			||||||
 | 
																</svg>
 | 
				
			||||||
 | 
																<a
 | 
				
			||||||
 | 
																	class="js-download-verify-link"
 | 
				
			||||||
 | 
																	href="data:text/octet-stream;base64,SGVsbG8gV29ybGQuLi4="
 | 
				
			||||||
 | 
																	download="hello.txt"
 | 
				
			||||||
 | 
																	target="_blank"
 | 
				
			||||||
 | 
																>
 | 
				
			||||||
 | 
																	Download
 | 
				
			||||||
 | 
																</a>
 | 
				
			||||||
 | 
															</div>
 | 
				
			||||||
 | 
															<hr />
 | 
				
			||||||
 | 
															<div>
 | 
				
			||||||
 | 
																<div class="file-ver-info-header">LOCATION</div>
 | 
				
			||||||
 | 
																<pre class="js-acme-ver-uri">..loading</pre>
 | 
				
			||||||
 | 
															</div>
 | 
				
			||||||
 | 
														</div>
 | 
				
			||||||
 | 
														<br />
 | 
				
			||||||
 | 
													</div>
 | 
				
			||||||
 | 
												</div>
 | 
				
			||||||
 | 
												<div class="js-acme-verification-dns-01">
 | 
				
			||||||
 | 
													<h3>Set each DNS Record</h3>
 | 
				
			||||||
 | 
													<div class="js-acme-dns">
 | 
				
			||||||
 | 
														<div class="acme-ver-dns-label">TXT Host</div>
 | 
				
			||||||
 | 
														<div class="js-acme-ver-txt-host">loading...</div>
 | 
				
			||||||
 | 
														<div class="acme-ver-dns-label">TXT Value</div>
 | 
				
			||||||
 | 
														<div class="js-acme-ver-txt-value">loading...</div>
 | 
				
			||||||
 | 
														<br />
 | 
				
			||||||
 | 
													</div>
 | 
				
			||||||
 | 
													<p>
 | 
				
			||||||
 | 
														<strong>Warning</strong>: You should wait at least 30 seconds
 | 
				
			||||||
 | 
														after setting DNS records before continuing.
 | 
				
			||||||
 | 
													</p>
 | 
				
			||||||
 | 
													<p>
 | 
				
			||||||
 | 
														<strong>Google DNS Users</strong>: You may need to wait up to
 | 
				
			||||||
 | 
														5 minutes.
 | 
				
			||||||
 | 
													</p>
 | 
				
			||||||
 | 
												</div>
 | 
				
			||||||
 | 
											</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          <h1>Let's verify your domain</h1>
 | 
											<div class="js-acme-wildcard-challenges">
 | 
				
			||||||
          <div class="js-acme-challenges">
 | 
												<div class="js-acme-verification-wildcard">
 | 
				
			||||||
            <div class="tabbed-selector">
 | 
													<h3>Set each DNS Record (for wildcards)</h3>
 | 
				
			||||||
              <label>
 | 
													<div class="js-acme-wildcard">
 | 
				
			||||||
                <input class="js-acme-challenge-type" name="acme-challenge-type" type="radio" value="http-01" checked required>
 | 
														<div class="acme-ver-dns-label">TXT Host</div>
 | 
				
			||||||
                File Upload
 | 
														<div class="js-acme-ver-txt-host">loading...</div>
 | 
				
			||||||
                <div></div>
 | 
														<div class="acme-ver-dns-label">TXT Value</div>
 | 
				
			||||||
              </label>
 | 
														<div class="js-acme-ver-txt-value">loading...</div>
 | 
				
			||||||
              <label>
 | 
														<br />
 | 
				
			||||||
                <input class="js-acme-challenge-type" name="acme-challenge-type" type="radio" value="dns-01" required>
 | 
													</div>
 | 
				
			||||||
                DNS Record
 | 
													<p>
 | 
				
			||||||
                <div></div>
 | 
														<strong>Warning</strong>: You should wait at least 30 seconds
 | 
				
			||||||
              </label>
 | 
														after setting DNS records before continuing.
 | 
				
			||||||
            </div>
 | 
													</p>
 | 
				
			||||||
            <div>
 | 
													<p>
 | 
				
			||||||
              <div class="js-acme-verification-http-01">
 | 
														<strong>Google DNS</strong>: You may need to wait up to 5
 | 
				
			||||||
                <h3>Upload each file</h3>
 | 
														minutes.
 | 
				
			||||||
                <div class="js-acme-http">
 | 
													</p>
 | 
				
			||||||
                  <div class="http-verification-info file-preview">
 | 
												</div>
 | 
				
			||||||
                    <div class="paper-fold"></div>
 | 
											</div>
 | 
				
			||||||
                    <div>
 | 
										</div>
 | 
				
			||||||
                      <div class="file-ver-info-header">FILENAME</div>
 | 
					 | 
				
			||||||
                      <pre class="js-acme-ver-file-location">...loading</pre>
 | 
					 | 
				
			||||||
                    </div>
 | 
					 | 
				
			||||||
                    <hr>
 | 
					 | 
				
			||||||
                    <div>
 | 
					 | 
				
			||||||
                      <div class="file-ver-info-header">CONTENTS</div>
 | 
					 | 
				
			||||||
                      <pre class="js-acme-ver-content">...loading</pre>
 | 
					 | 
				
			||||||
                    </div>
 | 
					 | 
				
			||||||
                    <div class="download-file">
 | 
					 | 
				
			||||||
                      <svg class="mdicon icon-download" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
 | 
					 | 
				
			||||||
                        <use xlink:href="#svg-download"></use>
 | 
					 | 
				
			||||||
                      </svg>
 | 
					 | 
				
			||||||
                      <a class="js-download-verify-link" href="data:text/octet-stream;base64,SGVsbG8gV29ybGQuLi4=" download="hello.txt" target="_blank">
 | 
					 | 
				
			||||||
                        Download
 | 
					 | 
				
			||||||
                      </a>
 | 
					 | 
				
			||||||
                    </div>
 | 
					 | 
				
			||||||
                    <hr>
 | 
					 | 
				
			||||||
                    <div>
 | 
					 | 
				
			||||||
                      <div class="file-ver-info-header">LOCATION</div>
 | 
					 | 
				
			||||||
                      <pre class="js-acme-ver-uri">..loading</pre>
 | 
					 | 
				
			||||||
                    </div>
 | 
					 | 
				
			||||||
                  </div>
 | 
					 | 
				
			||||||
                  <br>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
              </div>
 | 
					 | 
				
			||||||
              <div class="js-acme-verification-dns-01">
 | 
					 | 
				
			||||||
                <h3>Set each DNS Record</h3>
 | 
					 | 
				
			||||||
                <div class="js-acme-dns">
 | 
					 | 
				
			||||||
                  <div class="acme-ver-dns-label">TXT Host</div>
 | 
					 | 
				
			||||||
                  <div class="js-acme-ver-txt-host">loading...</div>
 | 
					 | 
				
			||||||
                  <div class="acme-ver-dns-label">TXT Value</div>
 | 
					 | 
				
			||||||
                  <div class="js-acme-ver-txt-value">loading...</div>
 | 
					 | 
				
			||||||
                  <br>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
                <p><strong>Warning</strong>:
 | 
					 | 
				
			||||||
                  You should wait at least 30 seconds after setting DNS records before continuing.</p>
 | 
					 | 
				
			||||||
                <p><strong>Google DNS Users</strong>:
 | 
					 | 
				
			||||||
                  You may need to wait up to 5 minutes.</p>
 | 
					 | 
				
			||||||
              </div>
 | 
					 | 
				
			||||||
            </div>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            <div class="js-acme-wildcard-challenges">
 | 
										<button class="button-next" type="submit">Next</button>
 | 
				
			||||||
              <div class="js-acme-verification-wildcard">
 | 
									</form>
 | 
				
			||||||
                <h3>Set each DNS Record (for wildcards)</h3>
 | 
					 | 
				
			||||||
                <div class="js-acme-wildcard">
 | 
					 | 
				
			||||||
                  <div class="acme-ver-dns-label">TXT Host</div>
 | 
					 | 
				
			||||||
                  <div class="js-acme-ver-txt-host">loading...</div>
 | 
					 | 
				
			||||||
                  <div class="acme-ver-dns-label">TXT Value</div>
 | 
					 | 
				
			||||||
                  <div class="js-acme-ver-txt-value">loading...</div>
 | 
					 | 
				
			||||||
                  <br>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
                <p><strong>Warning</strong>:
 | 
					 | 
				
			||||||
                  You should wait at least 30 seconds after setting DNS records before continuing.</p>
 | 
					 | 
				
			||||||
                <p><strong>Google DNS</strong>:
 | 
					 | 
				
			||||||
                  You may need to wait up to 5 minutes.</p>
 | 
					 | 
				
			||||||
              </div>
 | 
					 | 
				
			||||||
            </div>
 | 
					 | 
				
			||||||
          </div>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
          <button class="button-next" type="submit">Next</button>
 | 
									<!-- Step 4 Process Challanges -->
 | 
				
			||||||
        </form>
 | 
									<form class="js-acme-form js-acme-form-poll">
 | 
				
			||||||
 | 
										Verifying Domains... (give us 5 seconds or so...)
 | 
				
			||||||
 | 
										<div class="js-challenge-responses" hidden>
 | 
				
			||||||
 | 
											Checking
 | 
				
			||||||
 | 
											<span class="js-challenge-response-altname"> </span>
 | 
				
			||||||
 | 
											using <span class="js-challenge-response-type"> </span> :
 | 
				
			||||||
 | 
											<span class="js-challenge-response-status"> </span>
 | 
				
			||||||
 | 
										</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <!-- Step 4 Process Challanges -->
 | 
										<!--
 | 
				
			||||||
        <form class="js-acme-form js-acme-form-poll">
 | 
					 | 
				
			||||||
          Verifying Domains... (give us 5 seconds or so...)
 | 
					 | 
				
			||||||
          <div class="js-challenge-responses" hidden>
 | 
					 | 
				
			||||||
            Checking
 | 
					 | 
				
			||||||
            <span class="js-challenge-response-altname"> </span>
 | 
					 | 
				
			||||||
            using <span class="js-challenge-response-type"> </span>
 | 
					 | 
				
			||||||
            : <span class="js-challenge-response-status"> </span>
 | 
					 | 
				
			||||||
          </div>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
          <!--
 | 
					 | 
				
			||||||
          <table class="js-acme-table-verifying">
 | 
					          <table class="js-acme-table-verifying">
 | 
				
			||||||
            <thead>
 | 
					            <thead>
 | 
				
			||||||
              <tr>
 | 
					              <tr>
 | 
				
			||||||
@ -278,42 +419,58 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
          <button type="submit">Next</button>
 | 
					          <button type="submit">Next</button>
 | 
				
			||||||
          -->
 | 
					          -->
 | 
				
			||||||
        </form>
 | 
									</form>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <!-- Step 5 Get Certs -->
 | 
									<!-- Step 5 Get Certs -->
 | 
				
			||||||
        <form class="js-acme-form js-acme-form-download">
 | 
									<form class="js-acme-form js-acme-form-download">
 | 
				
			||||||
          <div class="cert-download-container">
 | 
										<div class="cert-download-container">
 | 
				
			||||||
            <h2><label>privkey.pem</label></h2>
 | 
											<h2><label>privkey.pem</label></h2>
 | 
				
			||||||
            <div class="acme-result-privkey file-preview">
 | 
											<div class="acme-result-privkey file-preview">
 | 
				
			||||||
              <div class="paper-fold"></div>
 | 
												<div class="paper-fold"></div>
 | 
				
			||||||
              <pre id="js-privkey">
 | 
												<pre id="js-privkey"></pre>
 | 
				
			||||||
              </pre>
 | 
											</div>
 | 
				
			||||||
            </div>
 | 
											<div class="download-file">
 | 
				
			||||||
            <div class="download-file">
 | 
												<svg
 | 
				
			||||||
              <svg class="mdicon icon-download" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
 | 
													class="mdicon icon-download"
 | 
				
			||||||
                <use xlink:href="#svg-download"></use>
 | 
													xmlns="http://www.w3.org/2000/svg"
 | 
				
			||||||
              </svg>
 | 
													viewbox="0 0 24 24"
 | 
				
			||||||
              <a id="js-download-privkey-link" href="data:text/octet-stream;base64,SGVsbG8gV29ybGQuLi4=" download="privkey.pem" target="_blank">
 | 
												>
 | 
				
			||||||
                Download
 | 
													<use xlink:href="#svg-download"></use>
 | 
				
			||||||
              </a>
 | 
												</svg>
 | 
				
			||||||
            </div>
 | 
												<a
 | 
				
			||||||
            <h2><label>fullchain.pem</label></h2>
 | 
													id="js-download-privkey-link"
 | 
				
			||||||
            <div class="acme-result-fullchain file-preview">
 | 
													href="data:text/octet-stream;base64,SGVsbG8gV29ybGQuLi4="
 | 
				
			||||||
              <div class="paper-fold"></div>
 | 
													download="privkey.pem"
 | 
				
			||||||
              <pre id="js-fullchain">
 | 
													target="_blank"
 | 
				
			||||||
              </pre>
 | 
												>
 | 
				
			||||||
            </div>
 | 
													Download
 | 
				
			||||||
            <div class="download-file">
 | 
												</a>
 | 
				
			||||||
              <svg class="mdicon icon-download" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
 | 
											</div>
 | 
				
			||||||
                <use xlink:href="#svg-download"></use>
 | 
											<h2><label>fullchain.pem</label></h2>
 | 
				
			||||||
              </svg>
 | 
											<div class="acme-result-fullchain file-preview">
 | 
				
			||||||
              <a id="js-download-fullchain-link" href="data:text/octet-stream;base64,SGVsbG8gV29ybGQuLi4=" download="fullchain.pem" target="_blank">
 | 
												<div class="paper-fold"></div>
 | 
				
			||||||
                Download
 | 
												<pre id="js-fullchain"></pre>
 | 
				
			||||||
              </a>
 | 
											</div>
 | 
				
			||||||
            </div>
 | 
											<div class="download-file">
 | 
				
			||||||
            <div>
 | 
												<svg
 | 
				
			||||||
            <h3>node.js https server example</h3>
 | 
													class="mdicon icon-download"
 | 
				
			||||||
            <pre><code>    'use strict';
 | 
													xmlns="http://www.w3.org/2000/svg"
 | 
				
			||||||
 | 
													viewbox="0 0 24 24"
 | 
				
			||||||
 | 
												>
 | 
				
			||||||
 | 
													<use xlink:href="#svg-download"></use>
 | 
				
			||||||
 | 
												</svg>
 | 
				
			||||||
 | 
												<a
 | 
				
			||||||
 | 
													id="js-download-fullchain-link"
 | 
				
			||||||
 | 
													href="data:text/octet-stream;base64,SGVsbG8gV29ybGQuLi4="
 | 
				
			||||||
 | 
													download="fullchain.pem"
 | 
				
			||||||
 | 
													target="_blank"
 | 
				
			||||||
 | 
												>
 | 
				
			||||||
 | 
													Download
 | 
				
			||||||
 | 
												</a>
 | 
				
			||||||
 | 
											</div>
 | 
				
			||||||
 | 
											<div>
 | 
				
			||||||
 | 
												<h3>node.js https server example</h3>
 | 
				
			||||||
 | 
												<pre><code>    'use strict';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    var https = require('https');
 | 
					    var https = require('https');
 | 
				
			||||||
    var server = https.createServer({
 | 
					    var server = https.createServer({
 | 
				
			||||||
@ -325,9 +482,9 @@
 | 
				
			|||||||
      console.log('Listening on', this.address());
 | 
					      console.log('Listening on', this.address());
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
            </code></pre>
 | 
					            </code></pre>
 | 
				
			||||||
          </div>
 | 
											</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          <!--
 | 
											<!--
 | 
				
			||||||
            TODO
 | 
					            TODO
 | 
				
			||||||
          <label>cert.pem</label>
 | 
					          <label>cert.pem</label>
 | 
				
			||||||
          <textarea class="js-cert">-</textarea>
 | 
					          <textarea class="js-cert">-</textarea>
 | 
				
			||||||
@ -340,39 +497,60 @@
 | 
				
			|||||||
          <a href="#">Advanced (copy and paste)</a>
 | 
					          <a href="#">Advanced (copy and paste)</a>
 | 
				
			||||||
          <br>
 | 
					          <br>
 | 
				
			||||||
          <button type="submit">Start Over</button>
 | 
					          <button type="submit">Start Over</button>
 | 
				
			||||||
          -->
 | 
					          --></div>
 | 
				
			||||||
        </form>
 | 
									</form>
 | 
				
			||||||
      </div>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <div><small><center>
 | 
									<div>
 | 
				
			||||||
      <div>
 | 
										<small
 | 
				
			||||||
          A <a href="https://rootprojects.org/" target="_blank">Root</a> Project
 | 
											><center>
 | 
				
			||||||
          | <a href="https://git.coolaj86.com/coolaj86/greenlock.html" target="_blank">View Source</a> (git)
 | 
												<div>
 | 
				
			||||||
          | <a href="https://rootprojects.org/legal/#terms" target="_blank">Terms of Service</a>
 | 
													A
 | 
				
			||||||
          | <a href="https://rootprojects.org/legal/#privacy" target="_blank">Privacy Policy</a>
 | 
													<a href="https://rootprojects.org/" target="_blank">Root</a>
 | 
				
			||||||
      </div>
 | 
													Project |
 | 
				
			||||||
      <!-- or
 | 
													<a
 | 
				
			||||||
 | 
														href="https://git.coolaj86.com/coolaj86/greenlock.html"
 | 
				
			||||||
 | 
														target="_blank"
 | 
				
			||||||
 | 
														>View Source</a
 | 
				
			||||||
 | 
													>
 | 
				
			||||||
 | 
													(git) |
 | 
				
			||||||
 | 
													<a href="https://rootprojects.org/legal/#terms" target="_blank"
 | 
				
			||||||
 | 
														>Terms of Service</a
 | 
				
			||||||
 | 
													>
 | 
				
			||||||
 | 
													|
 | 
				
			||||||
 | 
													<a
 | 
				
			||||||
 | 
														href="https://rootprojects.org/legal/#privacy"
 | 
				
			||||||
 | 
														target="_blank"
 | 
				
			||||||
 | 
														>Privacy Policy</a
 | 
				
			||||||
 | 
													>
 | 
				
			||||||
 | 
												</div>
 | 
				
			||||||
 | 
												<!-- or
 | 
				
			||||||
        <pre><code>git clone https://git.coolaj86.com/coolaj86/greenlock.html.git</code></pre>
 | 
					        <pre><code>git clone https://git.coolaj86.com/coolaj86/greenlock.html.git</code></pre>
 | 
				
			||||||
        Or view the live site code (same as live-site branch):
 | 
					        Or view the live site code (same as live-site branch):
 | 
				
			||||||
        <pre><code>wget https://greenlock.domains --mirror --convert-links --adjust-extension --page-requisites --no-parent</code></pre>
 | 
					        <pre><code>wget https://greenlock.domains --mirror --convert-links --adjust-extension --page-requisites --no-parent</code></pre>
 | 
				
			||||||
      -->
 | 
					      -->
 | 
				
			||||||
      </center></small></div>
 | 
											</center></small
 | 
				
			||||||
      <br>
 | 
										>
 | 
				
			||||||
 | 
									</div>
 | 
				
			||||||
 | 
									<br />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									<script src="./js/bluecrypt-acme.js"></script>
 | 
				
			||||||
 | 
									<script src="./js/greenlock.js"></script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <script src="./js/bluecrypt-acme.js"></script>
 | 
									<!-- Global site tag (gtag.js) - Google Analytics -->
 | 
				
			||||||
        <script src="./js/greenlock.js"></script>
 | 
									<script
 | 
				
			||||||
 | 
										async
 | 
				
			||||||
 | 
										src="https://www.googletagmanager.com/gtag/js?id=UA-118745161-2"
 | 
				
			||||||
 | 
									></script>
 | 
				
			||||||
 | 
									<script>
 | 
				
			||||||
 | 
										window.dataLayer = window.dataLayer || [];
 | 
				
			||||||
 | 
										function gtag() {
 | 
				
			||||||
 | 
											dataLayer.push(arguments);
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										gtag("js", new Date());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <!-- Global site tag (gtag.js) - Google Analytics -->
 | 
										gtag("config", "UA-118745161-2");
 | 
				
			||||||
        <script async src="https://www.googletagmanager.com/gtag/js?id=UA-118745161-2"></script>
 | 
									</script>
 | 
				
			||||||
        <script>
 | 
								</div>
 | 
				
			||||||
          window.dataLayer = window.dataLayer || [];
 | 
							</div>
 | 
				
			||||||
          function gtag(){dataLayer.push(arguments);}
 | 
						</body>
 | 
				
			||||||
          gtag('js', new Date());
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
          gtag('config', 'UA-118745161-2');
 | 
					 | 
				
			||||||
        </script>
 | 
					 | 
				
			||||||
      </div>
 | 
					 | 
				
			||||||
    </div>
 | 
					 | 
				
			||||||
  </body>
 | 
					 | 
				
			||||||
</html>
 | 
					</html>
 | 
				
			||||||
 | 
				
			|||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1005
									
								
								app/js/greenlock.js
									
									
									
									
									
								
							
							
						
						
									
										1005
									
								
								app/js/greenlock.js
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -1,263 +1,274 @@
 | 
				
			|||||||
body {
 | 
					body {
 | 
				
			||||||
    font-size: 18px;
 | 
						font-size: 18px;
 | 
				
			||||||
    font-family: Source Sans Pro, sans-serif;
 | 
						font-family: Source Sans Pro, sans-serif;
 | 
				
			||||||
    margin: 0;
 | 
						margin: 0;
 | 
				
			||||||
    line-height: 1.33;
 | 
						line-height: 1.33;
 | 
				
			||||||
    color: #1a1a1a;
 | 
						color: #1a1a1a;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
h1 {
 | 
					h1 {
 | 
				
			||||||
    text-align: center;
 | 
						text-align: center;
 | 
				
			||||||
    font-size: 1.77777778em;
 | 
						font-size: 1.77777778em;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
a {
 | 
					a {
 | 
				
			||||||
    color: #1a1a1a;
 | 
						color: #1a1a1a;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
input[type=email], input[type=text] {
 | 
					input[type="email"],
 | 
				
			||||||
    font-size: 1em;
 | 
					input[type="text"] {
 | 
				
			||||||
    padding: 0.444444444em 0.888889em;
 | 
						font-size: 1em;
 | 
				
			||||||
    width: 100%;
 | 
						padding: 0.444444444em 0.888889em;
 | 
				
			||||||
    border: solid 1px #d9d9d9;
 | 
						width: 100%;
 | 
				
			||||||
    border-radius: 2px;
 | 
						border: solid 1px #d9d9d9;
 | 
				
			||||||
 | 
						border-radius: 2px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pre {
 | 
					pre {
 | 
				
			||||||
    margin: 0;
 | 
						margin: 0;
 | 
				
			||||||
    font-family: Source Code Pro, monospace;
 | 
						font-family: Source Code Pro, monospace;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.column-row {
 | 
					.column-row {
 | 
				
			||||||
    width: 22.222222em;
 | 
						width: 22.222222em;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.column-container {
 | 
					.column-container {
 | 
				
			||||||
    display: flex;
 | 
						display: flex;
 | 
				
			||||||
    flex-direction: column;
 | 
						flex-direction: column;
 | 
				
			||||||
    align-items: center;
 | 
						align-items: center;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.progress-bar {
 | 
					.progress-bar {
 | 
				
			||||||
    height: 0;
 | 
						height: 0;
 | 
				
			||||||
    border: solid 1px #5bc17f;
 | 
						border: solid 1px #5bc17f;
 | 
				
			||||||
    background-color: #5bc17f;
 | 
						background-color: #5bc17f;
 | 
				
			||||||
    display: flex;
 | 
						display: flex;
 | 
				
			||||||
    justify-content: space-between;
 | 
						justify-content: space-between;
 | 
				
			||||||
    align-items: center;
 | 
						align-items: center;
 | 
				
			||||||
    width: 22em;
 | 
						width: 22em;
 | 
				
			||||||
    margin: 1.388888889em auto;
 | 
						margin: 1.388888889em auto;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.greenlock-logo-badge > img {
 | 
					.greenlock-logo-badge > img {
 | 
				
			||||||
    width: 100%;
 | 
						width: 100%;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.greenlock-logo-badge {
 | 
					.greenlock-logo-badge {
 | 
				
			||||||
    display: inline-block;
 | 
						display: inline-block;
 | 
				
			||||||
    border: solid 1px #d9d9d9;
 | 
						border: solid 1px #d9d9d9;
 | 
				
			||||||
    border-radius: 500px;
 | 
						border-radius: 500px;
 | 
				
			||||||
    width: 5.333333333em;
 | 
						width: 5.333333333em;
 | 
				
			||||||
    height: 5.333333333em;
 | 
						height: 5.333333333em;
 | 
				
			||||||
    margin-top: 4.277777778em;
 | 
						margin-top: 4.277777778em;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.header-row {
 | 
					.header-row {
 | 
				
			||||||
    text-align: center;
 | 
						text-align: center;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.progress-bar-step {
 | 
					.progress-bar-step {
 | 
				
			||||||
    position: relative;
 | 
						position: relative;
 | 
				
			||||||
    margin: -0.722222222em -0.166666667em;
 | 
						margin: -0.722222222em -0.166666667em;
 | 
				
			||||||
    display: inline-block;
 | 
						display: inline-block;
 | 
				
			||||||
    background-color: white;
 | 
						background-color: white;
 | 
				
			||||||
    /* border-radius: 100%; */
 | 
						/* border-radius: 100%; */
 | 
				
			||||||
    padding: 0 0.111111em;
 | 
						padding: 0 0.111111em;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.progress-bar-step > .circle {
 | 
					.progress-bar-step > .circle {
 | 
				
			||||||
    content: "";
 | 
						content: "";
 | 
				
			||||||
    display: inline-block;
 | 
						display: inline-block;
 | 
				
			||||||
    border: solid 0.111111111em #5bc17f;
 | 
						border: solid 0.111111111em #5bc17f;
 | 
				
			||||||
    width: 0.888888889em;
 | 
						width: 0.888888889em;
 | 
				
			||||||
    height: 0.888888889em;
 | 
						height: 0.888888889em;
 | 
				
			||||||
    border-radius: 100%;
 | 
						border-radius: 100%;
 | 
				
			||||||
    background: white;
 | 
						background: white;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.progress-step-label {
 | 
					.progress-step-label {
 | 
				
			||||||
    text-align: center;
 | 
						text-align: center;
 | 
				
			||||||
    position: absolute;
 | 
						position: absolute;
 | 
				
			||||||
    left: 50%;
 | 
						left: 50%;
 | 
				
			||||||
    =: block font-size: ;
 | 
						top: 139%;
 | 
				
			||||||
    top: 139%;
 | 
						font-size: 0.722222222em;
 | 
				
			||||||
    font-size: 0.722222222em;
 | 
						white-space: nowrap;
 | 
				
			||||||
    white-space: nowrap;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.progress-step-label > div {
 | 
					.progress-step-label > div {
 | 
				
			||||||
    position: relative;
 | 
						position: relative;
 | 
				
			||||||
    right: 50%;
 | 
						right: 50%;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.greenlock-name {
 | 
					.greenlock-name {
 | 
				
			||||||
    color: #808080;
 | 
						color: #808080;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.file-preview {
 | 
					.file-preview {
 | 
				
			||||||
    background: #f7f7f7;
 | 
						background: #f7f7f7;
 | 
				
			||||||
    position: relative;
 | 
						position: relative;
 | 
				
			||||||
    font-size: 0.833333333em;
 | 
						font-size: 0.833333333em;
 | 
				
			||||||
    padding: 1.6em 2.9333em 1.6em 1.6em;
 | 
						padding: 1.6em 2.9333em 1.6em 1.6em;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.js-progress-step-complete > .circle, .js-progress-step-started > .circle {
 | 
					.js-progress-step-complete > .circle,
 | 
				
			||||||
    background-color: #5bc17f;
 | 
					.js-progress-step-started > .circle {
 | 
				
			||||||
 | 
						background-color: #5bc17f;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.progress-bar-step.js-progress-step-complete svg {
 | 
					.progress-bar-step.js-progress-step-complete svg {
 | 
				
			||||||
    fill: white;
 | 
						fill: white;
 | 
				
			||||||
    /* stroke: none; */
 | 
						/* stroke: none; */
 | 
				
			||||||
    display: initial;
 | 
						display: initial;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.checkbox-array {
 | 
					.checkbox-array {
 | 
				
			||||||
    display: flex;
 | 
						display: flex;
 | 
				
			||||||
    flex-direction: column;
 | 
						flex-direction: column;
 | 
				
			||||||
    padding: 1em 0;
 | 
						padding: 1em 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.checkbox-array input[type=checkbox] {
 | 
					.checkbox-array input[type="checkbox"] {
 | 
				
			||||||
    opacity: 0;
 | 
						opacity: 0;
 | 
				
			||||||
    position: absolute;
 | 
						position: absolute;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.checkbox-array input[type=checkbox] ~ .icon-checked-box {
 | 
					.checkbox-array input[type="checkbox"] ~ .icon-checked-box {
 | 
				
			||||||
    display: none;
 | 
						display: none;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.checkbox-array input[type=checkbox] ~ .icon-unchecked-box {
 | 
					.checkbox-array input[type="checkbox"] ~ .icon-unchecked-box {
 | 
				
			||||||
    display: initial;
 | 
						display: initial;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.checkbox-array input[type=checkbox]:checked ~ .icon-checked-box {
 | 
					.checkbox-array input[type="checkbox"]:checked ~ .icon-checked-box {
 | 
				
			||||||
    display: initial;
 | 
						display: initial;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.checkbox-array input[type=checkbox]:checked ~ .icon-unchecked-box {
 | 
					.checkbox-array input[type="checkbox"]:checked ~ .icon-unchecked-box {
 | 
				
			||||||
    display: none;
 | 
						display: none;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.checkbox-array .icon-checked-box, .checkbox-array .icon-unchecked-box {
 | 
					.checkbox-array .icon-checked-box,
 | 
				
			||||||
    width: 1.333333333em;
 | 
					.checkbox-array .icon-unchecked-box {
 | 
				
			||||||
    fill: #5bc17f;
 | 
						width: 1.333333333em;
 | 
				
			||||||
    margin-right: 0.666666667em;
 | 
						fill: #5bc17f;
 | 
				
			||||||
 | 
						margin-right: 0.666666667em;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.checkbox-array label {
 | 
					.checkbox-array label {
 | 
				
			||||||
    display: flex;
 | 
						display: flex;
 | 
				
			||||||
    height: 1.333333333em;
 | 
						height: 1.333333333em;
 | 
				
			||||||
    font-size: 0.833333333em;
 | 
						font-size: 0.833333333em;
 | 
				
			||||||
    margin: 0.4em 0;
 | 
						margin: 0.4em 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.checkbox-array input[type=checkbox]:focus ~ .icon-checked-box, .checkbox-array input[type=checkbox]:focus ~ .icon-unchecked-box {
 | 
					.checkbox-array input[type="checkbox"]:focus ~ .icon-checked-box,
 | 
				
			||||||
    background: #5bc17f52;
 | 
					.checkbox-array input[type="checkbox"]:focus ~ .icon-unchecked-box {
 | 
				
			||||||
 | 
						background: #5bc17f52;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.email-usage {
 | 
					.email-usage {
 | 
				
			||||||
    color: #666666;
 | 
						color: #666666;
 | 
				
			||||||
    font-size: 0.833333333em;
 | 
						font-size: 0.833333333em;
 | 
				
			||||||
    margin: 2em 0;
 | 
						margin: 2em 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.button-next {
 | 
					.button-next {
 | 
				
			||||||
    width: 100%;
 | 
						width: 100%;
 | 
				
			||||||
    background-color: #5bc17f;
 | 
						background-color: #5bc17f;
 | 
				
			||||||
    border: none;
 | 
						border: none;
 | 
				
			||||||
    font-size: 1em;
 | 
						font-size: 1em;
 | 
				
			||||||
    color: white;
 | 
						color: white;
 | 
				
			||||||
    padding: 0.44444em;
 | 
						padding: 0.44444em;
 | 
				
			||||||
    margin: 1em 0;
 | 
						margin: 1em 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					button {
 | 
				
			||||||
 | 
						cursor: pointer;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.tabbed-selector label {
 | 
					.tabbed-selector label {
 | 
				
			||||||
    width: 50%;
 | 
						width: 50%;
 | 
				
			||||||
    padding: 0.5em 0;
 | 
						padding: 0.5em 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.tabbed-selector {
 | 
					.tabbed-selector {
 | 
				
			||||||
    display: flex;
 | 
						display: flex;
 | 
				
			||||||
    font-weight: bold;
 | 
						font-weight: bold;
 | 
				
			||||||
    text-align: center;
 | 
						text-align: center;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.tabbed-selector input[type=radio] {
 | 
					.tabbed-selector input[type="radio"] {
 | 
				
			||||||
    display: none;
 | 
						display: none;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.download-file svg {
 | 
					.download-file svg {
 | 
				
			||||||
    fill: #5bc17f;
 | 
						fill: #5bc17f;
 | 
				
			||||||
    width: 1.333333333em;
 | 
						width: 1.333333333em;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.download-file a {
 | 
					.download-file a {
 | 
				
			||||||
    color: #5bc17f;
 | 
						color: #5bc17f;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.mdicon {
 | 
					.mdicon {
 | 
				
			||||||
    position: relative;
 | 
						position: relative;
 | 
				
			||||||
    top: 0.4em;
 | 
						top: 0.4em;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.http-verification-info {
 | 
					.http-verification-info {
 | 
				
			||||||
    padding-right: 6.933333333em;
 | 
						padding-right: 6.933333333em;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.paper-fold {
 | 
					.paper-fold {
 | 
				
			||||||
    position: absolute;
 | 
						position: absolute;
 | 
				
			||||||
    width: 2em;
 | 
						width: 2em;
 | 
				
			||||||
    height: 2em;
 | 
						height: 2em;
 | 
				
			||||||
    border-left: solid #d9d9d9 1px;
 | 
						border-left: solid #d9d9d9 1px;
 | 
				
			||||||
    border-bottom: solid #d9d9d9 1px;
 | 
						border-bottom: solid #d9d9d9 1px;
 | 
				
			||||||
    right: 0;
 | 
						right: 0;
 | 
				
			||||||
    top: 0;
 | 
						top: 0;
 | 
				
			||||||
    background: linear-gradient(45deg, #f7f7f7 0%,#f7f7f7 50%,#ffffff 50%,#ffffff 100%);
 | 
						background: linear-gradient(
 | 
				
			||||||
 | 
							45deg,
 | 
				
			||||||
 | 
							#f7f7f7 0%,
 | 
				
			||||||
 | 
							#f7f7f7 50%,
 | 
				
			||||||
 | 
							#ffffff 50%,
 | 
				
			||||||
 | 
							#ffffff 100%
 | 
				
			||||||
 | 
						);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.file-ver-info-header {
 | 
					.file-ver-info-header {
 | 
				
			||||||
    color: #808080;
 | 
						color: #808080;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.http-verification-info hr {
 | 
					.http-verification-info hr {
 | 
				
			||||||
    border: none;
 | 
						border: none;
 | 
				
			||||||
    border-bottom: solid 1px #d9d9d9;
 | 
						border-bottom: solid 1px #d9d9d9;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.acme-ver-uri {
 | 
					.acme-ver-uri {
 | 
				
			||||||
    word-break: break-all;
 | 
						word-break: break-all;
 | 
				
			||||||
    margin: auto;
 | 
						margin: auto;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.acme-ver-dns-label {
 | 
					.acme-ver-dns-label {
 | 
				
			||||||
    margin: 1.777777778em 0 0.444444444em 0;
 | 
						margin: 1.777777778em 0 0.444444444em 0;
 | 
				
			||||||
    border-bottom: solid 1px #d9d9d9;
 | 
						border-bottom: solid 1px #d9d9d9;
 | 
				
			||||||
    font-weight: bold;
 | 
						font-weight: bold;
 | 
				
			||||||
    padding-bottom: 0.166666667em;
 | 
						padding-bottom: 0.166666667em;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.tabbed-selector input[type="radio"]:checked ~ div {
 | 
					.tabbed-selector input[type="radio"]:checked ~ div {
 | 
				
			||||||
    border: solid 1px #5bc17f;
 | 
						border: solid 1px #5bc17f;
 | 
				
			||||||
    background-color: #5bc17f;
 | 
						background-color: #5bc17f;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.file-preview pre {
 | 
					.file-preview pre {
 | 
				
			||||||
    white-space: pre-line;
 | 
						white-space: pre-line;
 | 
				
			||||||
    word-break: break-all;
 | 
						word-break: break-all;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
.cert-download-container {
 | 
					.cert-download-container {
 | 
				
			||||||
    margin: 0 -31%;
 | 
						margin: 0 -31%;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										250
									
								
								index.html
									
									
									
									
									
								
							
							
						
						
									
										250
									
								
								index.html
									
									
									
									
									
								
							@ -1,99 +1,171 @@
 | 
				
			|||||||
<html>
 | 
					<html>
 | 
				
			||||||
  <head>
 | 
						<head>
 | 
				
			||||||
    <title>Greenlock™</title>
 | 
							<title>Greenlock™</title>
 | 
				
			||||||
    <meta property="og:image" content="https://greenlock.domains/img/greenlock-mark-400x400.png" />
 | 
							<meta
 | 
				
			||||||
    <link href="styles/main.css" rel="stylesheet">
 | 
								property="og:image"
 | 
				
			||||||
    <style>
 | 
								content="https://greenlock.domains/img/greenlock-mark-400x400.png"
 | 
				
			||||||
      @font-face {
 | 
							/>
 | 
				
			||||||
        font-family: 'Source Sans Pro';
 | 
							<link href="styles/main.css" rel="stylesheet" />
 | 
				
			||||||
        font-style: normal;
 | 
							<style>
 | 
				
			||||||
        font-display: block;
 | 
								@font-face {
 | 
				
			||||||
        font-weight: 400;
 | 
									font-family: "Source Sans Pro";
 | 
				
			||||||
        src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url(./fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2) format('woff2');
 | 
									font-style: normal;
 | 
				
			||||||
        unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
 | 
									font-display: block;
 | 
				
			||||||
      }
 | 
									font-weight: 400;
 | 
				
			||||||
      @font-face {
 | 
									src: local("Source Sans Pro Regular"), local("SourceSansPro-Regular"),
 | 
				
			||||||
        font-family: 'Source Sans Pro';
 | 
										url(./fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2) format("woff2");
 | 
				
			||||||
        font-style: normal;
 | 
									unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
 | 
				
			||||||
        font-weight: 700;
 | 
										U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
 | 
				
			||||||
        font-display: block;
 | 
										U+2212, U+2215, U+FEFF, U+FFFD;
 | 
				
			||||||
        src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url(./fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2) format('woff2');
 | 
								}
 | 
				
			||||||
        unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
 | 
								@font-face {
 | 
				
			||||||
      }
 | 
									font-family: "Source Sans Pro";
 | 
				
			||||||
    </style>
 | 
									font-style: normal;
 | 
				
			||||||
    <link rel="preload" href="./app/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2" as="font" crossorigin="anonymous">
 | 
									font-weight: 700;
 | 
				
			||||||
    <link rel="preload" href="./app/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" as="font" crossorigin="anonymous">
 | 
									font-display: block;
 | 
				
			||||||
    <link rel="prefetch" href="./app/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPevW.woff2" as="font" crossorigin="anonymous">
 | 
									src: local("Source Sans Pro Bold"), local("SourceSansPro-Bold"),
 | 
				
			||||||
    <link rel="prefetch" href="./app/js/bluecrypt-acme.js" as="script">
 | 
										url(./fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2)
 | 
				
			||||||
    <link rel="prefetch" href="./app/js/greenlock.js" as="script">
 | 
											format("woff2");
 | 
				
			||||||
    <link rel="prefetch" href="./js/app.js" as="script">
 | 
									unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
 | 
				
			||||||
  </head>
 | 
										U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
 | 
				
			||||||
  <body class="js-app-ready">
 | 
										U+2212, U+2215, U+FEFF, U+FFFD;
 | 
				
			||||||
    <script>
 | 
								}
 | 
				
			||||||
      document.querySelector('body').classList.remove("js-app-ready");
 | 
							</style>
 | 
				
			||||||
    </script>
 | 
							<link
 | 
				
			||||||
    <div class="column-container wide">
 | 
								rel="preload"
 | 
				
			||||||
 | 
								href="./app/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2"
 | 
				
			||||||
 | 
								as="font"
 | 
				
			||||||
 | 
								crossorigin="anonymous"
 | 
				
			||||||
 | 
							/>
 | 
				
			||||||
 | 
							<link
 | 
				
			||||||
 | 
								rel="preload"
 | 
				
			||||||
 | 
								href="./app/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2"
 | 
				
			||||||
 | 
								as="font"
 | 
				
			||||||
 | 
								crossorigin="anonymous"
 | 
				
			||||||
 | 
							/>
 | 
				
			||||||
 | 
							<link
 | 
				
			||||||
 | 
								rel="prefetch"
 | 
				
			||||||
 | 
								href="./app/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPevW.woff2"
 | 
				
			||||||
 | 
								as="font"
 | 
				
			||||||
 | 
								crossorigin="anonymous"
 | 
				
			||||||
 | 
							/>
 | 
				
			||||||
 | 
							<link rel="prefetch" href="./app/js/bluecrypt-acme.js" as="script" />
 | 
				
			||||||
 | 
							<link rel="prefetch" href="./app/js/greenlock.js" as="script" />
 | 
				
			||||||
 | 
							<link rel="prefetch" href="./js/app.js" as="script" />
 | 
				
			||||||
 | 
						</head>
 | 
				
			||||||
 | 
						<body class="js-app-ready">
 | 
				
			||||||
 | 
							<script>
 | 
				
			||||||
 | 
								document.querySelector("body").classList.remove("js-app-ready");
 | 
				
			||||||
 | 
							</script>
 | 
				
			||||||
 | 
							<div class="column-container wide">
 | 
				
			||||||
 | 
								<div class="column-row">
 | 
				
			||||||
 | 
									<img alt="Greenlock logo" src="img/greenlock-146.png" />
 | 
				
			||||||
 | 
								</div>
 | 
				
			||||||
 | 
								<div class="column-row">
 | 
				
			||||||
 | 
									<h1>Get the green lock for your website</h1>
 | 
				
			||||||
 | 
								</div>
 | 
				
			||||||
 | 
								<div class="column-row">
 | 
				
			||||||
 | 
									<div class="js-javascript-warning">
 | 
				
			||||||
 | 
										Greenlock will process the CSR in the browser and request the
 | 
				
			||||||
 | 
										certificates directly from letsencrypt.org. Please enable Javascript
 | 
				
			||||||
 | 
										before continuing.
 | 
				
			||||||
 | 
									</div>
 | 
				
			||||||
 | 
									<form id="js-acme-form" action="./app/" method="GET">
 | 
				
			||||||
 | 
										<div class="domain-psuedo-input">
 | 
				
			||||||
 | 
											<span class="secure-green">Secure</span> |
 | 
				
			||||||
 | 
											<span class="secure-green">https:</span>//<input
 | 
				
			||||||
 | 
												aria-label="domains to secure"
 | 
				
			||||||
 | 
												id="acme-domains"
 | 
				
			||||||
 | 
												type="text"
 | 
				
			||||||
 | 
												name="acme-domains"
 | 
				
			||||||
 | 
												placeholder="Your domain name"
 | 
				
			||||||
 | 
												required
 | 
				
			||||||
 | 
											/>
 | 
				
			||||||
 | 
										</div>
 | 
				
			||||||
 | 
										<button type="submit">Go</button>
 | 
				
			||||||
 | 
										<div class="domain-subtext">
 | 
				
			||||||
 | 
											Domain, subdomain, or wildcard domain
 | 
				
			||||||
 | 
										</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <div class="column-row">
 | 
										<div class="acme-advanced-fields">
 | 
				
			||||||
        <img src="img/greenlock-146.png">
 | 
											<label
 | 
				
			||||||
      </div>
 | 
												><input
 | 
				
			||||||
      <div class="column-row">
 | 
													name="acme-api-type"
 | 
				
			||||||
        <h1>Get the green lock for your website</h1>
 | 
													type="radio"
 | 
				
			||||||
      </div>
 | 
													value="v02"
 | 
				
			||||||
      <div class="column-row">
 | 
													checked
 | 
				
			||||||
        <div class="js-javascript-warning">
 | 
													required
 | 
				
			||||||
          Greenlock will process the CSR in the browser and request the certificates directly from letsencrypt.org.
 | 
												/>
 | 
				
			||||||
          Please enable Javascript before continuing.
 | 
												Production
 | 
				
			||||||
        </div>
 | 
											</label>
 | 
				
			||||||
        <form id="js-acme-form" action="./app/" method="GET">
 | 
											<label
 | 
				
			||||||
          <div class="domain-psuedo-input">
 | 
												><input
 | 
				
			||||||
            <span class="secure-green">Secure</span> | <span class="secure-green">https:</span>//<input aria-label="domains to secure" id="acme-domains" type="text" name="acme-domains" placeholder="Your domain name" required>
 | 
													name="acme-api-type"
 | 
				
			||||||
          </div>
 | 
													type="radio"
 | 
				
			||||||
          <button type="submit">Go</button>
 | 
													value="staging-v02"
 | 
				
			||||||
          <div class="domain-subtext">Domain, subdomain, or wildcard domain</div>
 | 
													required
 | 
				
			||||||
 | 
												/>
 | 
				
			||||||
          <div class="acme-advanced-fields">
 | 
												Testing</label
 | 
				
			||||||
            <label><input name="acme-api-type" type="radio" value="v02" checked required>
 | 
											>
 | 
				
			||||||
              Production
 | 
											<input
 | 
				
			||||||
            </label>
 | 
												id="js-acme-api-url"
 | 
				
			||||||
            <label><input name="acme-api-type" type="radio" value="staging-v02" required>
 | 
												type="url"
 | 
				
			||||||
              Testing</label>
 | 
												placeholder="ACME directory url"
 | 
				
			||||||
            <input id="js-acme-api-url" type="url" placeholder="ACME directory url">
 | 
											/>
 | 
				
			||||||
            <br>
 | 
											<br />
 | 
				
			||||||
            API Compatibility: Let's Encrypt v2 / ACME draft 15
 | 
											API Compatibility: Let's Encrypt v2 / ACME draft 15
 | 
				
			||||||
            <div>
 | 
											<div>
 | 
				
			||||||
              <br>
 | 
												<br />
 | 
				
			||||||
              A <a href="https://rootprojects.org/" target="_blank">Root</a> Project
 | 
												A
 | 
				
			||||||
              | <a href="https://git.coolaj86.com/coolaj86/greenlock.html" target="_blank">View Source</a> (git)
 | 
												<a href="https://rootprojects.org/" target="_blank">Root</a>
 | 
				
			||||||
              | <a href="https://rootprojects.org/legal/#terms" target="_blank">Terms of Service</a>
 | 
												Project |
 | 
				
			||||||
              | <a href="https://rootprojects.org/legal/#privacy" target="_blank">Privacy Policy</a>
 | 
												<a
 | 
				
			||||||
            </div>
 | 
													href="https://git.coolaj86.com/coolaj86/greenlock.html"
 | 
				
			||||||
          </div>
 | 
													target="_blank"
 | 
				
			||||||
        </form>
 | 
													>View Source</a
 | 
				
			||||||
      </div>
 | 
												>
 | 
				
			||||||
      <div class="column-row">
 | 
												(git) |
 | 
				
			||||||
        <div class="why-you-need">
 | 
												<a href="https://rootprojects.org/legal/#terms" target="_blank"
 | 
				
			||||||
          <h2>Why you need HTTPS</h2>
 | 
													>Terms of Service</a
 | 
				
			||||||
          SSL Certificates are required for secure login, accepting payments, and for browsers like Google Chrome to stop showing security warnings to your users.
 | 
												>
 | 
				
			||||||
        </div>
 | 
												|
 | 
				
			||||||
      </div>
 | 
												<a href="https://rootprojects.org/legal/#privacy" target="_blank"
 | 
				
			||||||
      <!-- or
 | 
													>Privacy Policy</a
 | 
				
			||||||
 | 
												>
 | 
				
			||||||
 | 
											</div>
 | 
				
			||||||
 | 
										</div>
 | 
				
			||||||
 | 
									</form>
 | 
				
			||||||
 | 
								</div>
 | 
				
			||||||
 | 
								<div class="column-row">
 | 
				
			||||||
 | 
									<div class="why-you-need">
 | 
				
			||||||
 | 
										<h2>Why you need HTTPS</h2>
 | 
				
			||||||
 | 
										SSL Certificates are required for secure login, accepting payments,
 | 
				
			||||||
 | 
										and for browsers like Google Chrome to stop showing security warnings
 | 
				
			||||||
 | 
										to your users.
 | 
				
			||||||
 | 
									</div>
 | 
				
			||||||
 | 
								</div>
 | 
				
			||||||
 | 
								<!-- or
 | 
				
			||||||
      <pre><code>git clone https://git.coolaj86.com/coolaj86/greenlock.html.git</code></pre>
 | 
					      <pre><code>git clone https://git.coolaj86.com/coolaj86/greenlock.html.git</code></pre>
 | 
				
			||||||
      Or view the live site code (same as live-site branch):
 | 
					      Or view the live site code (same as live-site branch):
 | 
				
			||||||
      <pre><code>wget https://greenlock.domains --mirror --convert-links --adjust-extension --page-requisites --no-parent</code></pre>
 | 
					      <pre><code>wget https://greenlock.domains --mirror --convert-links --adjust-extension --page-requisites --no-parent</code></pre>
 | 
				
			||||||
      -->
 | 
					      -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <script src="./js/app.js"></script>
 | 
								<script src="./js/app.js"></script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <!-- Global site tag (gtag.js) - Google Analytics -->
 | 
								<!-- Global site tag (gtag.js) - Google Analytics -->
 | 
				
			||||||
      <script async src="https://www.googletagmanager.com/gtag/js?id=UA-118745161-2"></script>
 | 
								<script
 | 
				
			||||||
      <script>
 | 
									async
 | 
				
			||||||
        window.dataLayer = window.dataLayer || [];
 | 
									src="https://www.googletagmanager.com/gtag/js?id=UA-118745161-2"
 | 
				
			||||||
        function gtag(){dataLayer.push(arguments);}
 | 
								></script>
 | 
				
			||||||
        gtag('js', new Date());
 | 
								<script>
 | 
				
			||||||
 | 
									window.dataLayer = window.dataLayer || [];
 | 
				
			||||||
 | 
									function gtag() {
 | 
				
			||||||
 | 
										dataLayer.push(arguments);
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									gtag("js", new Date());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        gtag('config', 'UA-118745161-2');
 | 
									gtag("config", "UA-118745161-2");
 | 
				
			||||||
      </script>
 | 
								</script>
 | 
				
			||||||
    </div>
 | 
							</div>
 | 
				
			||||||
  </body>
 | 
						</body>
 | 
				
			||||||
</html>
 | 
					</html>
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										4
									
								
								install.bat
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								install.bat
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					mkdir -p app\js\
 | 
				
			||||||
 | 
					bitsadmin.exe /transfer "JobName" https://rootprojects.org/acme/bluecrypt-acme.js "%cd%\app\js\bluecrypt-acme.js"
 | 
				
			||||||
 | 
					bitsadmin.exe /transfer "JobName" https://rootprojects.org/acme/bluecrypt-acme.min.js "%cd%\app\js\bluecrypt-acme.min.js"
 | 
				
			||||||
							
								
								
									
										13
									
								
								install.sh
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								install.sh
									
									
									
									
									
								
							@ -5,16 +5,3 @@ pushd app/js/
 | 
				
			|||||||
  wget -c https://rootprojects.org/acme/bluecrypt-acme.js
 | 
					  wget -c https://rootprojects.org/acme/bluecrypt-acme.js
 | 
				
			||||||
  wget -c https://rootprojects.org/acme/bluecrypt-acme.min.js
 | 
					  wget -c https://rootprojects.org/acme/bluecrypt-acme.min.js
 | 
				
			||||||
popd
 | 
					popd
 | 
				
			||||||
 | 
					 | 
				
			||||||
mkdir -p app/js/pkijs.org/v1.3.33/
 | 
					 | 
				
			||||||
pushd app/js/pkijs.org/v1.3.33/
 | 
					 | 
				
			||||||
  wget -c https://raw.githubusercontent.com/PeculiarVentures/PKI.js/41b63af760cacb565dd850fb3466ada4ca163eff/org/pkijs/common.js
 | 
					 | 
				
			||||||
  wget -c https://raw.githubusercontent.com/PeculiarVentures/PKI.js/41b63af760cacb565dd850fb3466ada4ca163eff/org/pkijs/x509_schema.js
 | 
					 | 
				
			||||||
  wget -c https://raw.githubusercontent.com/PeculiarVentures/PKI.js/41b63af760cacb565dd850fb3466ada4ca163eff/org/pkijs/x509_simpl.js
 | 
					 | 
				
			||||||
  wget -c https://raw.githubusercontent.com/PeculiarVentures/ASN1.js/f7181c21c61e53a940ea24373ab489ad86d51bc1/org/pkijs/asn1.js
 | 
					 | 
				
			||||||
popd
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
mkdir -p app/js/browser-csr/v1.0.0-alpha/
 | 
					 | 
				
			||||||
pushd app/js/browser-csr/v1.0.0-alpha/
 | 
					 | 
				
			||||||
  wget -c https://git.coolaj86.com/coolaj86/browser-csr.js/raw/commit/01cdc0e91b5bf03f12e1b25b4129e3cde927987c/csr.js
 | 
					 | 
				
			||||||
popd
 | 
					 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										55
									
								
								js/app.js
									
									
									
									
									
								
							
							
						
						
									
										55
									
								
								js/app.js
									
									
									
									
									
								
							@ -1,32 +1,39 @@
 | 
				
			|||||||
(function () {
 | 
					(function() {
 | 
				
			||||||
'use strict';
 | 
						"use strict";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  var $qs = function (s) { return window.document.querySelector(s); };
 | 
						var $qs = function(s) {
 | 
				
			||||||
 | 
							return window.document.querySelector(s);
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  $qs('.js-javascript-warning').hidden = true;
 | 
						$qs(".js-javascript-warning").hidden = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  var apiUrl = 'https://acme-{{env}}.api.letsencrypt.org/directory';
 | 
						var apiUrl = "https://acme-{{env}}.api.letsencrypt.org/directory";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  function updateApiType() {
 | 
						function updateApiType() {
 | 
				
			||||||
    var formData = new FormData($qs("#js-acme-form"));
 | 
							var formData = new FormData($qs("#js-acme-form"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    console.log('ACME api type radio:');
 | 
							console.log("ACME api type radio:");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    var value = formData.get("acme-api-type");
 | 
							var value = formData.get("acme-api-type");
 | 
				
			||||||
    $qs('#js-acme-api-url').value = apiUrl.replace(/{{env}}/g, value);
 | 
							$qs("#js-acme-api-url").value = apiUrl.replace(/{{env}}/g, value);
 | 
				
			||||||
  }
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  $qs('#js-acme-form').addEventListener('change', updateApiType);
 | 
						$qs("#js-acme-form").addEventListener("change", updateApiType);
 | 
				
			||||||
  //$qs('#js-acme-form').addEventListener('submit', prettyRedirect);
 | 
						//$qs('#js-acme-form').addEventListener('submit', prettyRedirect);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  updateApiType();
 | 
						updateApiType();
 | 
				
			||||||
  try {
 | 
						try {
 | 
				
			||||||
    document.fonts.load().then(function() {
 | 
							document.fonts
 | 
				
			||||||
      $qs('body').classList.add("js-app-ready");
 | 
								.load()
 | 
				
			||||||
    }).catch(function(e) {
 | 
								.then(function() {
 | 
				
			||||||
      $qs('body').classList.add("js-app-ready");
 | 
									$qs("body").classList.add("js-app-ready");
 | 
				
			||||||
    });
 | 
								})
 | 
				
			||||||
  } catch(e) {
 | 
								.catch(function(e) {
 | 
				
			||||||
    setTimeout(function() {$qs('body').classList.add("js-app-ready");}, 200);
 | 
									$qs("body").classList.add("js-app-ready");
 | 
				
			||||||
  }
 | 
								});
 | 
				
			||||||
}());
 | 
						} catch (e) {
 | 
				
			||||||
 | 
							setTimeout(function() {
 | 
				
			||||||
 | 
								$qs("body").classList.add("js-app-ready");
 | 
				
			||||||
 | 
							}, 200);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					})();
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										416
									
								
								legal.html
									
									
									
									
									
								
							
							
						
						
									
										416
									
								
								legal.html
									
									
									
									
									
								
							@ -1,201 +1,315 @@
 | 
				
			|||||||
<h1>Greetings!</h1>
 | 
					<!DOCTYPE html>
 | 
				
			||||||
 | 
					<html>
 | 
				
			||||||
 | 
						<head>
 | 
				
			||||||
 | 
							<title>Root Legal</title>
 | 
				
			||||||
 | 
						</head>
 | 
				
			||||||
 | 
						<body>
 | 
				
			||||||
 | 
							<h1>Greetings!</h1>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>I, AJ ONeal, am not a big fan of legalize, but I am a fan of communicating
 | 
							<p>
 | 
				
			||||||
clearly. I hope that this accomplish both defining some legal boundaries as well
 | 
								I, AJ ONeal, am not a big fan of legalize, but I am a fan of communicating
 | 
				
			||||||
as communicating in a friendly and clear way, at least to the degree that suits
 | 
								clearly. I hope that this accomplish both defining some legal boundaries
 | 
				
			||||||
our needs for the current stage of our products and services.
 | 
								as well as communicating in a friendly and clear way, at least to the
 | 
				
			||||||
 | 
								degree that suits our needs for the current stage of our products and
 | 
				
			||||||
 | 
								services.
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>This is important because it is our intent to create sustainable open source
 | 
							<p>
 | 
				
			||||||
projects, which means that we do want to create brand value, grow community,
 | 
								This is important because it is our intent to create sustainable open
 | 
				
			||||||
and, eventually, be able to work full time on creating more great software and services.
 | 
								source projects, which means that we do want to create brand value, grow
 | 
				
			||||||
 | 
								community, and, eventually, be able to work full time on creating more
 | 
				
			||||||
 | 
								great software and services.
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>If you'd like to contact me, especially if you feel that I (or we) have made
 | 
							<p>
 | 
				
			||||||
a mistake in how we operate, please do so:
 | 
								If you'd like to contact me, especially if you feel that I (or we) have
 | 
				
			||||||
 | 
								made a mistake in how we operate, please do so:
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<ul>
 | 
							<ul>
 | 
				
			||||||
  <li><a href="mailto:coolaj86@gmail.com">coolaj86@gmail.com</a></li>
 | 
								<li><a href="mailto:coolaj86@gmail.com">coolaj86@gmail.com</a></li>
 | 
				
			||||||
  <li><a href="tel:+13852360466">+1 (385) 236-0466</a></li>
 | 
								<li><a href="tel:+13852360466">+1 (385) 236-0466</a></li>
 | 
				
			||||||
  <li><a href="http://coolaj86.com">https://coolaj86.com</a></li>
 | 
								<li><a href="http://coolaj86.com">https://coolaj86.com</a></li>
 | 
				
			||||||
</ul>
 | 
							</ul>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<h1>Contents</h1>
 | 
							<h1>Contents</h1>
 | 
				
			||||||
<p>Here's what I've worked through so far:
 | 
							<p>Here's what I've worked through so far:</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<ul>
 | 
							<ul>
 | 
				
			||||||
  <li><a href="#greenlock">Greelock Domains</a></li>
 | 
								<li><a href="#greenlock">Greelock Domains</a></li>
 | 
				
			||||||
  <li><a href="#licensing">Licensing</a></li>
 | 
								<li><a href="#licensing">Licensing</a></li>
 | 
				
			||||||
  <li><a href="#terms">Terms of Service</a></li>
 | 
								<li><a href="#terms">Terms of Service</a></li>
 | 
				
			||||||
  <li><a href="#trademark">Trademark</a></li>
 | 
								<li><a href="#trademark">Trademark</a></li>
 | 
				
			||||||
  <li><a href="#privacy">Privacy</a></li>
 | 
								<li><a href="#privacy">Privacy</a></li>
 | 
				
			||||||
</ul>
 | 
							</ul>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<h1 id="greenlock">Greenlock Domains™</h1>
 | 
							<h1 id="greenlock">Greenlock Domains™</h1>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>Greenlock Domains is a service provided by
 | 
							<p>
 | 
				
			||||||
<em><a href="https://coolaj86.com">AJ</a>, Brian,
 | 
								Greenlock Domains is a service provided by
 | 
				
			||||||
  <a href="https://jshaver.net">John</a>, & Josh</em>
 | 
								<em
 | 
				
			||||||
(collectively <a href="https://therootcompany.com">Root</a>)
 | 
									><a href="https://coolaj86.com">AJ</a>, Brian,
 | 
				
			||||||
for automated TLS, SSL, and HTTPS.
 | 
									<a href="https://jshaver.net">John</a>, & Josh</em
 | 
				
			||||||
 | 
								>
 | 
				
			||||||
 | 
								(collectively <a href="https://therootcompany.com">Root</a>) for automated
 | 
				
			||||||
 | 
								TLS, SSL, and HTTPS.
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<ul>
 | 
							<ul>
 | 
				
			||||||
  <li><a href="https://greenlock.domains" target="_blank">
 | 
								<li>
 | 
				
			||||||
    https://greenlock.domains</a></li>
 | 
									<a href="https://greenlock.domains" target="_blank">
 | 
				
			||||||
 | 
										https://greenlock.domains</a
 | 
				
			||||||
 | 
									>
 | 
				
			||||||
 | 
								</li>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <li><a href="https://git.coolaj86.com/coolaj86/greenlock-express.js" target="_blank">
 | 
								<li>
 | 
				
			||||||
    https://git.coolaj86.com/coolaj86/greenlock-express.js</a></li>
 | 
									<a
 | 
				
			||||||
 | 
										href="https://git.coolaj86.com/coolaj86/greenlock-express.js"
 | 
				
			||||||
 | 
										target="_blank"
 | 
				
			||||||
 | 
									>
 | 
				
			||||||
 | 
										https://git.coolaj86.com/coolaj86/greenlock-express.js</a
 | 
				
			||||||
 | 
									>
 | 
				
			||||||
 | 
								</li>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <li><a href="https://git.coolaj86.com/coolaj86/greenlock.js" target="_blank">
 | 
								<li>
 | 
				
			||||||
    https://git.coolaj86.com/coolaj86/greenlock.js</a></li>
 | 
									<a
 | 
				
			||||||
 | 
										href="https://git.coolaj86.com/coolaj86/greenlock.js"
 | 
				
			||||||
 | 
										target="_blank"
 | 
				
			||||||
 | 
									>
 | 
				
			||||||
 | 
										https://git.coolaj86.com/coolaj86/greenlock.js</a
 | 
				
			||||||
 | 
									>
 | 
				
			||||||
 | 
								</li>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <li><a href="https://git.coolaj86.com/coolaj86/greenlock.html" target="_blank">
 | 
								<li>
 | 
				
			||||||
    https://git.coolaj86.com/coolaj86/greenlock.html</a></li>
 | 
									<a
 | 
				
			||||||
</ul>
 | 
										href="https://git.coolaj86.com/coolaj86/greenlock.html"
 | 
				
			||||||
 | 
										target="_blank"
 | 
				
			||||||
 | 
									>
 | 
				
			||||||
 | 
										https://git.coolaj86.com/coolaj86/greenlock.html</a
 | 
				
			||||||
 | 
									>
 | 
				
			||||||
 | 
								</li>
 | 
				
			||||||
 | 
							</ul>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>Greenlock Domains is an important product / service combo to us
 | 
							<p>
 | 
				
			||||||
because it's a huge milestone on the path to a more decentralized web.
 | 
								Greenlock Domains is an important product / service combo to us because
 | 
				
			||||||
We believe in <em>ownership</em> and <em>control</em> and we're
 | 
								it's a huge milestone on the path to a more decentralized web. We believe
 | 
				
			||||||
building a <a href="https://therootcompany.com">Home Server</a>
 | 
								in
 | 
				
			||||||
because we envision a world in which everyone is empowered to make
 | 
								<em>ownership</em> and <em>control</em> and we're building a
 | 
				
			||||||
the choice of whether to rent or own their stuff.
 | 
								<a href="https://therootcompany.com">Home Server</a> because we envision a
 | 
				
			||||||
 | 
								world in which everyone is empowered to make the choice of whether to rent
 | 
				
			||||||
 | 
								or own their stuff.
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>If we don't do this, well, with the way the cloud is headed,
 | 
							<p>
 | 
				
			||||||
renting may be the only option in the future.
 | 
								If we don't do this, well, with the way the cloud is headed, renting may
 | 
				
			||||||
 | 
								be the only option in the future.
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>We need <em>Root</em> because we want ownership.
 | 
							<p>We need <em>Root</em> because we want ownership.</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>If at any time you feel that any of our messaging or practices
 | 
							<p>
 | 
				
			||||||
are in conflict with our mission or these values, please let us know.
 | 
								If at any time you feel that any of our messaging or practices are in
 | 
				
			||||||
 | 
								conflict with our mission or these values, please let us know.
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<h1 id="licensing">Licensing</h1>
 | 
							<h1 id="licensing">Licensing</h1>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>Each of our products comes with its own LICENSE file and the license(s)
 | 
							<p>
 | 
				
			||||||
may alse be in some sort of manifest file (such as package.json).
 | 
								Each of our products comes with its own LICENSE file and the license(s)
 | 
				
			||||||
 | 
								may alse be in some sort of manifest file (such as package.json).
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>We typically use the MIT and Apache-2.0 licenses for libraries that we
 | 
							<p>
 | 
				
			||||||
actively want others to copy, modify, use and redistribute.
 | 
								We typically use the MIT and Apache-2.0 licenses for libraries that we
 | 
				
			||||||
 | 
								actively want others to copy, modify, use and redistribute.
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>We typically use ISC and MPL-2.0 with products for which we're a little more
 | 
							<p>
 | 
				
			||||||
concerned about branding or about which we have particularly strong opinions.
 | 
								We typically use ISC and MPL-2.0 with products for which we're a little
 | 
				
			||||||
 | 
								more concerned about branding or about which we have particularly strong
 | 
				
			||||||
 | 
								opinions.
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>Although we do keep some of our software proprietary and we do use trademarks,
 | 
							<p>
 | 
				
			||||||
because we believe in empowerment and choice we do our best to provide usable
 | 
								Although we do keep some of our software proprietary and we do use
 | 
				
			||||||
self-service forms of our products and services for personal use.
 | 
								trademarks, because we believe in empowerment and choice we do our best to
 | 
				
			||||||
 | 
								provide usable self-service forms of our products and services for
 | 
				
			||||||
 | 
								personal use.
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>If at any time you feel that our Licensing is in conflict with our mission or values,
 | 
							<p>
 | 
				
			||||||
please let us know.
 | 
								If at any time you feel that our Licensing is in conflict with our mission
 | 
				
			||||||
 | 
								or values, please let us know.
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<h1 id="terms">Terms of Service</h1>
 | 
							<h1 id="terms">Terms of Service</h1>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>We want to make the world a better place.
 | 
							<p>
 | 
				
			||||||
Everyone has a different definition of what "a better place" means,
 | 
								We want to make the world a better place. Everyone has a different
 | 
				
			||||||
so the purpose of our terms is to rule out some things that
 | 
								definition of what "a better place" means, so the purpose of our terms is
 | 
				
			||||||
we think makes the world (and particularly our world) a worse place:
 | 
								to rule out some things that we think makes the world (and particularly
 | 
				
			||||||
 | 
								our world) a worse place:
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>You agree that you will use the Greenlock™ service, code, libraries,
 | 
							<p>
 | 
				
			||||||
documentation, etc (provided by <a href="#greenlock">us</a>)
 | 
								You agree that you will use the Greenlock™ service, code, libraries,
 | 
				
			||||||
primarily for securing network connections for yourself, your customers,
 | 
								documentation, etc (provided by <a href="#greenlock">us</a>) primarily for
 | 
				
			||||||
on your and your customer's devices on internets, intranets, and... other nets.
 | 
								securing network connections for yourself, your customers, on your and
 | 
				
			||||||
 | 
								your customer's devices on internets, intranets, and... other nets.
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>You agree that you will take reasonable measures to keep up-to-date with security
 | 
							<p>
 | 
				
			||||||
releases.
 | 
								You agree that you will take reasonable measures to keep up-to-date with
 | 
				
			||||||
 | 
								security releases.
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>You agree to not use our products or services in a way that would cause unusual
 | 
							<p>
 | 
				
			||||||
or undue burden on our servers or services, our partners servers or services, or our
 | 
								You agree to not use our products or services in a way that would cause
 | 
				
			||||||
customers servers or services, or in a way that harms or misrepresents the reputation
 | 
								unusual or undue burden on our servers or services, our partners servers
 | 
				
			||||||
or brand value (including causing brand confusion) of the aforementioned parties
 | 
								or services, or our customers servers or services, or in a way that harms
 | 
				
			||||||
(or really anybody).
 | 
								or misrepresents the reputation or brand value (including causing brand
 | 
				
			||||||
 | 
								confusion) of the aforementioned parties (or really anybody).
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>This is not to say that you can't publicly have a negative opinion, but don't
 | 
							<p>
 | 
				
			||||||
bite the hand that feeds and don't be vicious or misrepresentative.
 | 
								This is not to say that you can't publicly have a negative opinion, but
 | 
				
			||||||
 | 
								don't bite the hand that feeds and don't be vicious or misrepresentative.
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>If you have a use case that may be in violation of these terms (particularly
 | 
							<p>
 | 
				
			||||||
the part about undue burden), but you feel contributes to making the world a better
 | 
								If you have a use case that may be in violation of these terms
 | 
				
			||||||
place, we're here to help (assuming it also aligns with our values).
 | 
								(particularly the part about undue burden), but you feel contributes to
 | 
				
			||||||
Although it may not be appropriate to use our services, but perhaps we can help
 | 
								making the world a better place, we're here to help (assuming it also
 | 
				
			||||||
you with a solution based on our no-cost, low-cost or open source products.
 | 
								aligns with our values). Although it may not be appropriate to use our
 | 
				
			||||||
 | 
								services, but perhaps we can help you with a solution based on our
 | 
				
			||||||
 | 
								no-cost, low-cost or open source products.
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>If at any time you feel that our Terms of Service are in conflict with our
 | 
							<p>
 | 
				
			||||||
mission or values, please let us know.
 | 
								If at any time you feel that our Terms of Service are in conflict with our
 | 
				
			||||||
 | 
								mission or values, please let us know.
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<h1 id="trademark">Trademark</h1>
 | 
							<h1 id="trademark">Trademark</h1>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>"Greenlock" and the "green G lock" mark are Trademarks of
 | 
							<p>
 | 
				
			||||||
<a href="https://coolaj86.com" target="_blank">AJ ONeal</a>.
 | 
								"Greenlock" and the "green G lock" mark are Trademarks of
 | 
				
			||||||
 | 
								<a href="https://coolaj86.com" target="_blank">AJ ONeal</a>.
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>We'll be coming out with a brand guide as to how you should use
 | 
							<p>
 | 
				
			||||||
the marks. In the meantime: don't change the proportions, colors
 | 
								We'll be coming out with a brand guide as to how you should use the marks.
 | 
				
			||||||
(excepting the case of greyscale and black and white).
 | 
								In the meantime: don't change the proportions, colors (excepting the case
 | 
				
			||||||
 | 
								of greyscale and black and white).
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>It is appropriate to use the trademark in a way that promotes the
 | 
							<p>
 | 
				
			||||||
brand with proper attribution, linking to the official project repositories, etc.
 | 
								It is appropriate to use the trademark in a way that promotes the brand
 | 
				
			||||||
 | 
								with proper attribution, linking to the official project repositories,
 | 
				
			||||||
 | 
								etc.
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>It is appropriate use the name greenlock in a plugin for Greenlock™,
 | 
							<p>
 | 
				
			||||||
as long as it is clear that it is a community contribution.
 | 
								It is appropriate use the name greenlock in a plugin for Greenlock™,
 | 
				
			||||||
 | 
								as long as it is clear that it is a community contribution.
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>If you create a "hard" fork of our code or any products or services,
 | 
							<p>
 | 
				
			||||||
you should give your fork its own name, and not use ours.
 | 
								If you create a "hard" fork of our code or any products or services, you
 | 
				
			||||||
That sound, we gladly welcome your suggestiosn and pull requests.
 | 
								should give your fork its own name, and not use ours. That sound, we
 | 
				
			||||||
 | 
								gladly welcome your suggestiosn and pull requests.
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>If you mirror our code you should make it clear that it is a mirror
 | 
							<p>
 | 
				
			||||||
and link to the official repository.
 | 
								If you mirror our code you should make it clear that it is a mirror and
 | 
				
			||||||
in association with usand the disclose that you use Greenlock
 | 
								link to the official repository. in association with usand the disclose
 | 
				
			||||||
 | 
								that you use Greenlock
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>If at any time you feel that our Trademark policies are in conflict with our
 | 
							<p>
 | 
				
			||||||
values, please let us know.
 | 
								If at any time you feel that our Trademark policies are in conflict with
 | 
				
			||||||
 | 
								our values, please let us know.
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<h1 id="privacy">Privacy Policy</h1>
 | 
							<h1 id="privacy">Privacy Policy</h1>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>What we collect and (more importantly) <em>Why</em>:
 | 
							<p>What we collect and (more importantly) <em>Why</em>:</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p><strong>Name</strong>:
 | 
							<p><strong>Name</strong>:</p>
 | 
				
			||||||
<p>In the cases that we collect your name, it's because we want to know how to address you.
 | 
							<p>
 | 
				
			||||||
All four of us want to be personable if and when we reach out.
 | 
								In the cases that we collect your name, it's because we want to know how
 | 
				
			||||||
 | 
								to address you. All four of us want to be personable if and when we reach
 | 
				
			||||||
 | 
								out.
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p><strong>Email</strong>:
 | 
							<p><strong>Email</strong>:</p>
 | 
				
			||||||
<p>There are three main purposes for which we may use your email address:
 | 
							<p>
 | 
				
			||||||
 | 
								There are three main purposes for which we may use your email address:
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>1. A one-time outreach to ask if you were able to do what you intended to do.
 | 
							<p>
 | 
				
			||||||
We want to make a great product. Although open source projects traditionally have
 | 
								1. A one-time outreach to ask if you were able to do what you intended to
 | 
				
			||||||
a <em>reactive</em> approach to communication (i.e. you file a bug and wait for a response),
 | 
								do. We want to make a great product. Although open source projects
 | 
				
			||||||
we believe that creating sustainable open source requires a <em>proactive</em> approach.
 | 
								traditionally have a <em>reactive</em> approach to communication (i.e. you
 | 
				
			||||||
 | 
								file a bug and wait for a response), we believe that creating sustainable
 | 
				
			||||||
 | 
								open source requires a <em>proactive</em> approach.
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>2. Security and legal notifications. It's important that we have a way to contact you
 | 
							<p>
 | 
				
			||||||
if we've made a mistake or discover a mistake that needs to be addressed. This
 | 
								2. Security and legal notifications. It's important that we have a way to
 | 
				
			||||||
may include vulnerabilities as well as mandatory upgrades (such as when a
 | 
								contact you if we've made a mistake or discover a mistake that needs to be
 | 
				
			||||||
significant change to the Let's Encrypt API is made). Making sure that our products
 | 
								addressed. This may include vulnerabilities as well as mandatory upgrades
 | 
				
			||||||
work and are secure aligns with our values and contributes to our brand identity.
 | 
								(such as when a significant change to the Let's Encrypt API is made).
 | 
				
			||||||
 | 
								Making sure that our products work and are secure aligns with our values
 | 
				
			||||||
 | 
								and contributes to our brand identity.
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>3. Opt-in updates. Many of you want to know when we have significant feature updates
 | 
							<p>
 | 
				
			||||||
or when we have something that we believe is really valuable to share. We've created an
 | 
								3. Opt-in updates. Many of you want to know when we have significant
 | 
				
			||||||
opt-in avenue for that. And you can always opt-out as well.
 | 
								feature updates or when we have something that we believe is really
 | 
				
			||||||
 | 
								valuable to share. We've created an opt-in avenue for that. And you can
 | 
				
			||||||
 | 
								always opt-out as well.
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p><strong>Telemetry</strong>:
 | 
							<p><strong>Telemetry</strong>:</p>
 | 
				
			||||||
<p>We believe that the current open source model needs improvement - it often
 | 
							<p>
 | 
				
			||||||
relies heavily on large centralized platforms which aggregate a lot of user
 | 
								We believe that the current open source model needs improvement - it often
 | 
				
			||||||
information for the platform without appropriately targeting the relationship
 | 
								relies heavily on large centralized platforms which aggregate a lot of
 | 
				
			||||||
between authors and users of projcts (i.e. npm, github, etc). We believe that
 | 
								user information for the platform without appropriately targeting the
 | 
				
			||||||
making open source sustainable means a greater focus on empowering authors
 | 
								relationship between authors and users of projcts (i.e. npm, github, etc).
 | 
				
			||||||
and users. We've learned from other projects (Caddy, Heroku, and others) which
 | 
								We believe that making open source sustainable means a greater focus on
 | 
				
			||||||
use telemetry as part of a proactive approach to open source and we believe that
 | 
								empowering authors and users. We've learned from other projects (Caddy,
 | 
				
			||||||
it can be a great avenue for us to be proactive as well.
 | 
								Heroku, and others) which use telemetry as part of a proactive approach to
 | 
				
			||||||
 | 
								open source and we believe that it can be a great avenue for us to be
 | 
				
			||||||
 | 
								proactive as well.
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>We may use telemetry about operating system, browser, node version, code version,
 | 
							<p>
 | 
				
			||||||
and other system-level information to better understand how we can serve our users (you)
 | 
								We may use telemetry about operating system, browser, node version, code
 | 
				
			||||||
and proactively solve problems that we might not otherwise hear about. For example, if
 | 
								version, and other system-level information to better understand how we
 | 
				
			||||||
we see many page visits in a certain browser (or installs with a new version of node),
 | 
								can serve our users (you) and proactively solve problems that we might not
 | 
				
			||||||
but few successful registrations, we know that something is wrong.
 | 
								otherwise hear about. For example, if we see many page visits in a certain
 | 
				
			||||||
 | 
								browser (or installs with a new version of node), but few successful
 | 
				
			||||||
 | 
								registrations, we know that something is wrong.
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p><strong>Other</strong>:
 | 
							<p><strong>Other</strong>:</p>
 | 
				
			||||||
<p>We also use Google Analytics on our web sites for basic functionality.
 | 
							<p>
 | 
				
			||||||
Other than that, nothing else comes to mind right now.
 | 
								We also use Google Analytics on our web sites for basic functionality.
 | 
				
			||||||
As we consider what we will do in the future, it will be measured against our mission and values.
 | 
								Other than that, nothing else comes to mind right now. As we consider what
 | 
				
			||||||
We never want to come across as spammy or forceful. We want to do things that help us build
 | 
								we will do in the future, it will be measured against our mission and
 | 
				
			||||||
our brand, acknowledge our customers; things that are proactive, and that
 | 
								values. We never want to come across as spammy or forceful. We want to do
 | 
				
			||||||
promote sustainable source.
 | 
								things that help us build our brand, acknowledge our customers; things
 | 
				
			||||||
 | 
								that are proactive, and that promote sustainable source.
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p>If at any time you feel that our Privacy policy is in conflict with our mission or values,
 | 
							<p>
 | 
				
			||||||
please let us know.
 | 
								If at any time you feel that our Privacy policy is in conflict with our
 | 
				
			||||||
 | 
								mission or values, please let us know.
 | 
				
			||||||
 | 
							</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<br>
 | 
							<br />
 | 
				
			||||||
<br>
 | 
							<br />
 | 
				
			||||||
<p>Copyright 2018 AJ ONeal
 | 
							<p>Copyright 2018 AJ ONeal</p>
 | 
				
			||||||
 | 
						</body>
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										138
									
								
								styles/main.css
									
									
									
									
									
								
							
							
						
						
									
										138
									
								
								styles/main.css
									
									
									
									
									
								
							@ -1,115 +1,115 @@
 | 
				
			|||||||
.column-row {
 | 
					.column-row {
 | 
				
			||||||
  display: flex;
 | 
						display: flex;
 | 
				
			||||||
  flex-direction: column;
 | 
						flex-direction: column;
 | 
				
			||||||
  text-align: center;
 | 
						text-align: center;
 | 
				
			||||||
  align-items: center;
 | 
						align-items: center;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
body {
 | 
					body {
 | 
				
			||||||
  position: relative;
 | 
						position: relative;
 | 
				
			||||||
  margin-top: 5.777777778em;
 | 
						margin-top: 5.777777778em;
 | 
				
			||||||
  min-height: 36em;
 | 
						min-height: 36em;
 | 
				
			||||||
  font-size: 18px;
 | 
						font-size: 18px;
 | 
				
			||||||
  font-family: 'Source Sans Pro', sans-serif;
 | 
						font-family: "Source Sans Pro", sans-serif;
 | 
				
			||||||
  font-stretch: normal;
 | 
						font-stretch: normal;
 | 
				
			||||||
  line-height: 1.33;
 | 
						line-height: 1.33;
 | 
				
			||||||
  letter-spacing:  -0.4px;
 | 
						letter-spacing: -0.4px;
 | 
				
			||||||
  color: #1a1a1a;
 | 
						color: #1a1a1a;
 | 
				
			||||||
  opacity: 0;
 | 
						opacity: 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
h1 {
 | 
					h1 {
 | 
				
			||||||
  font-size: 2.666666667em;
 | 
						font-size: 2.666666667em;
 | 
				
			||||||
  max-width: 8em;
 | 
						max-width: 8em;
 | 
				
			||||||
  text-align: center;
 | 
						text-align: center;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
input {
 | 
					input {
 | 
				
			||||||
  font-size: 1em;
 | 
						font-size: 1em;
 | 
				
			||||||
  padding: 0.444444444em;
 | 
						padding: 0.444444444em;
 | 
				
			||||||
  border: solid #d9d9d9 1px;
 | 
						border: solid #d9d9d9 1px;
 | 
				
			||||||
  border-radius: 2px;
 | 
						border-radius: 2px;
 | 
				
			||||||
  font-family: inherit;
 | 
						font-family: inherit;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
button {
 | 
					button {
 | 
				
			||||||
  padding: 0.444444444em 1.2em;
 | 
						padding: 0.444444444em 1.2em;
 | 
				
			||||||
  font-size: 1em;
 | 
						font-size: 1em;
 | 
				
			||||||
  background-color: #5bc17f;
 | 
						background-color: #5bc17f;
 | 
				
			||||||
  border: solid 1px #5bc17f;
 | 
						border: solid 1px #5bc17f;
 | 
				
			||||||
  border-radius: 2px;
 | 
						border-radius: 2px;
 | 
				
			||||||
  font-weight: normal;
 | 
						font-weight: normal;
 | 
				
			||||||
  font-stretch: normal;
 | 
						font-stretch: normal;
 | 
				
			||||||
  letter-spacing: -0.4px;
 | 
						letter-spacing: -0.4px;
 | 
				
			||||||
  font-family: inherit;
 | 
						font-family: inherit;
 | 
				
			||||||
  text-align: center;
 | 
						text-align: center;
 | 
				
			||||||
  color: white;
 | 
						color: white;
 | 
				
			||||||
  height: 40px;
 | 
						height: 40px;
 | 
				
			||||||
  line-height: 1.13;
 | 
						line-height: 1.13;
 | 
				
			||||||
 | 
						cursor: pointer;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.acme-advanced-fields {
 | 
					.acme-advanced-fields {
 | 
				
			||||||
  position: absolute;
 | 
						position: absolute;
 | 
				
			||||||
  bottom: 0;
 | 
						bottom: 0;
 | 
				
			||||||
  padding: 1em;
 | 
						padding: 1em;
 | 
				
			||||||
  text-align: center;
 | 
						text-align: center;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.domain-subtext {
 | 
					.domain-subtext {
 | 
				
			||||||
  font-size: 0.833333333em;
 | 
						font-size: 0.833333333em;
 | 
				
			||||||
  color: #666;
 | 
						color: #666;
 | 
				
			||||||
  text-align: center;
 | 
						text-align: center;
 | 
				
			||||||
  margin: 0.5em;
 | 
						margin: 0.5em;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
input#acme-domains:before {
 | 
					input#acme-domains:before {
 | 
				
			||||||
  content: "Secure | https://";
 | 
						content: "Secure | https://";
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.domain-psuedo-input {
 | 
					.domain-psuedo-input {
 | 
				
			||||||
  display: inline-block;
 | 
						display: inline-block;
 | 
				
			||||||
  margin-right: .6666667em;
 | 
						margin-right: 0.6666667em;
 | 
				
			||||||
  border: solid #d9d9d9 1px;
 | 
						border: solid #d9d9d9 1px;
 | 
				
			||||||
  border-radius: 2px;
 | 
						border-radius: 2px;
 | 
				
			||||||
  padding: 0.44444444em;
 | 
						padding: 0.44444444em;
 | 
				
			||||||
  color: #d9d9d9;
 | 
						color: #d9d9d9;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
input#acme-domains {
 | 
					input#acme-domains {
 | 
				
			||||||
  border: none;
 | 
						border: none;
 | 
				
			||||||
  padding: 0;
 | 
						padding: 0;
 | 
				
			||||||
  padding-right: 0;
 | 
						padding-right: 0;
 | 
				
			||||||
  width: 17.2222222em;
 | 
						width: 17.2222222em;
 | 
				
			||||||
  color: #222;
 | 
						color: #222;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
input#acme-domains:focus {
 | 
					input#acme-domains:focus {
 | 
				
			||||||
  outline: none;
 | 
						outline: none;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
span.secure-green {
 | 
					span.secure-green {
 | 
				
			||||||
  color: #5bc17f;
 | 
						color: #5bc17f;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.why-you-need {
 | 
					.why-you-need {
 | 
				
			||||||
  width: 26.555556em;
 | 
						width: 26.555556em;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
body.js-app-ready {
 | 
					body.js-app-ready {
 | 
				
			||||||
  transition: opacity 0.2s;
 | 
						transition: opacity 0.2s;
 | 
				
			||||||
  opacity: 1;
 | 
						opacity: 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.acme-advanced-fields > * {
 | 
					.acme-advanced-fields > * {
 | 
				
			||||||
  margin: 0 0.5em;
 | 
						margin: 0 0.5em;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.js-javascript-warning {
 | 
					.js-javascript-warning {
 | 
				
			||||||
  border: solid 1px red;
 | 
						border: solid 1px red;
 | 
				
			||||||
  background-color: #ffc0cb40;
 | 
						background-color: #ffc0cb40;
 | 
				
			||||||
  border-radius: 2px;
 | 
						border-radius: 2px;
 | 
				
			||||||
  margin: 0.6em;
 | 
						margin: 0.6em;
 | 
				
			||||||
  padding: 0.5em 1em;
 | 
						padding: 0.5em 1em;
 | 
				
			||||||
  width: 30em;
 | 
						width: 30em;
 | 
				
			||||||
 }
 | 
					}
 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user