SFE: Add more Let's Encrypt branding to the web UI (#7609)

Rework the Self-Service Unpause Portal's UI:
- Use Let's Encrypt logo and colors
- Use Let's Encrypt favicon
- Modify the layout to have a visually separate header and footer

Part of #7499
Part of #7619
This commit is contained in:
Samantha Frank 2024-07-25 16:16:19 -04:00 committed by GitHub
parent 98a4bc01ea
commit 92b6a16030
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 255 additions and 167 deletions

View File

@ -1,22 +1,16 @@
<!doctype html>
<html dir="ltr" lang="en-US">
<header>
<title>Self-Service Frontend</title>
{{ template "meta" }}
</header>
<body>
<h1>No Action Required</h1>
<div>
{{ template "header" }}
<div class="section">
<h1>Invalid self-service URL</h1>
<p>
There is no action for you to take. This page is intended for
Subscribers whose accounts have been temporarily restricted from
requesting new certificates for certain identifiers, following a
significant number of failed validation attempts without any recent
successes. If your account was paused, your <a
href="https://letsencrypt.org/docs/client-options/">ACME client</a>
would provide you with a URL to visit to unpause your account.
If you got here by visiting a URL found in your ACME client logs, please
carefully check that you copied the URL correctly.
</p>
</div>
</body>
<p>
If you continue to encounter difficulties, or if you need more help, our
<a href='https://community.letsencrypt.org'>community support forum</a>
is a great resource for troubleshooting and advice.
</p>
</div>
{{template "footer"}}

View File

@ -1,64 +1,73 @@
<!doctype html>
<html dir="ltr" lang="en-US">
<header>
<title>Unpause - Self-Service Frontend</title>
{{ template "meta" }}
</header>
<body>
<div>
<h1>Action Required to Unpause Your ACME Account</h1>
{{ template "header" }}
<div class="section">
<h1>Action required to unpause your account</h1>
<p>
You have been directed to this page because your Account ID {{ .AccountID }}
is temporarily restricted from requesting new certificates for certain
identifiers including, but potentially not limited to, the following:
<ul>
{{ range $identifier := .Identifiers }}<li>{{ $identifier }}</li>{{ end }}
</ul>
You have been directed to this page because your ACME account (ID: {{
.AccountID }}) is temporarily restricted from requesting new
certificates for certain identifiers including, but not limited to, the
following:
</p>
<h2>Why Did This Happen?</h2>
<ul>
{{ range $identifier := .Identifiers }}<li>{{ $identifier}}</li>{{ end }}
</ul>
<p>
These identifiers were paused after consistently failing validation
attempts without any successes over an extended period.
</p>
</div>
<div class="section">
<h1>Why did this happen?</h1>
<p>
This often happens when domain names expire, point to new hosts, or if
there are issues with the DNS configuration or web server settings.
These problems prevent your ACME client from successfully <a
href="https://letsencrypt.org/how-it-works/">validating control over the
domain</a>, which is necessary for issuing TLS certificates.
These problems prevent your ACME client from successfully
<a href="https://letsencrypt.org/how-it-works/">validating control over
the domain</a>, which is necessary for issuing TLS certificates.
</p>
<h2>What Can You Do?</h2>
</div>
<div class="section highlight">
<h1>What can you do?</h1>
<p>
Please check the DNS configuration and web server settings for the
affected identifiers. Ensure they are properly set up to respond to ACME
challenges. This might involve updating DNS records, renewing domain
registrations, or adjusting web server configurations. If you use a
hosting provider or third-party service for domain management, you may
need to coordinate with them. If you believe you've fixed the underlying
issue, consider attempting issuance against our <a
href="https://letsencrypt.org/docs/staging-environment/">staging
environment</a> to verify your fix.
challenges. This could include:
<ul>
<li>updating DNS records,</li>
<li>renewing domain registrations, or</li>
<li>adjusting web server configurations.</li>
</ul>
If you use a hosting provider or third-party service for domain management,
you may need to coordinate with them. If you believe you've fixed the
underlying issue, consider attempting issuance against our <a
href="https://letsencrypt.org/docs/staging-environment/">staging
environment</a> to verify your fix.
</p>
<h2>Ready to Unpause?</h2>
</div>
<div class="section">
<h1>Ready to unpause?</h1>
<p>
Once you have addressed these issues, click the button below to remove
the pause on your account. This action will allow you to resume
requesting certificates for all affected identifiers associated with
your account.
If you believe these issues have been addressed, click the button below
to remove the pause on your account. This action will allow you to
resume requesting certificates for all affected identifiers associated
with your account, not just those listed above.
</p>
<form action="{{ .UnpauseFormRedirectionPath }}?jwt={{ .JWT }}" method="POST">
<button class="primary" id="submit">Please Unpause My Account</button>
</form>
</div>
<div class="section">
<p>
<strong>Note:</strong> If you face difficulties unpausing your account or
need more guidance, our <a
<b>Note:</b> If you encounter difficulties unpausing your account, or
you need more help, our <a
href="https://community.letsencrypt.org">community support forum</a> is
a great resource for troubleshooting and advice.
</p>
<div>
<form action="{{ .UnpauseFormRedirectionPath }}?jwt={{ .JWT }}" method="POST">
<button class="primary" id="submit">Please Unpause My Account</button>
</form>
</div>
</div>
</body>
</div>
{{template "footer"}}

View File

@ -1,20 +1,16 @@
<!doctype html>
<html dir="ltr" lang="en-US">
<header>
<title>Unpause - Self-Service Frontend</title>
{{ template "meta" }}
</header>
<body>
<div>
<h1>Invalid Request To Unpause Account</h1>
<p>
Your unpause request was invalid meaning that we could not find all of
the data required in the URL. Please verify you copied the log line from
your client correctly. You may visit our <a
href="https://community.letsencrypt.org">community forum</a> and request
assistance if the problem persists.
{{ template "header" }}
<div class="section">
<h1>Invalid unpause URL</h1>
<p>
If you got here by visiting a URL found in your ACME client logs, please
carefully check that you copied the URL correctly.
</p>
</div>
</body>
<p>
If you continue to encounter difficulties, or if you need more help, our
<a href='https://community.letsencrypt.org'>community support forum</a>
is a great resource for troubleshooting and advice.
</p>
</div>
{{template "footer"}}

View File

@ -1,32 +1,27 @@
<!doctype html>
<html dir="ltr" lang="en-US">
<header>
<title>Unpause - Self-Service Frontend</title>
{{ template "meta" }}
</header>
<body>
<div>
{{ template "header" }}
<div class="section">
{{ if eq .UnpauseSuccessful true }}
<h1>Your ACME Account Has Been Unpaused</h1>
<h1>Account successfully unpaused</h1>
<p>
Your ACME account has been unpaused. To obtain a new certificate,
re-attempt issuance with your ACME client. Future repeated validation
failures with no successes will result in your account being paused
again.
To obtain a new certificate, re-attempt issuance with your ACME client.
Future repeated validation failures with no successes will result in
identifiers being paused again.
</p>
{{ else }}
<h1>Error Occurred While Unpausing Account</h1>
<p>
An error was encountered when attempting to unpause your account. Please
try again later. You may visit our <a
href="https://community.letsencrypt.org">community forum</a> and request
assistance if the problem persists.
{{ else }}
<h1>An error occurred while unpausing your account</h1>
<p>
Please try again later. If you face continued difficulties, please visit our <a
href="https://community.letsencrypt.org">community support forum</a>
for troubleshooting and advice.
</p>
{{ end }}
</div>
</body>
</div>
{{template "footer"}}

View File

@ -32,7 +32,7 @@ var (
//go:embed all:static
staticFS embed.FS
//go:embed all:templates all:pages
//go:embed all:templates all:pages all:static
dynamicFS embed.FS
)

View File

@ -151,7 +151,7 @@ func TestIndexPath(t *testing.T) {
})
test.AssertEquals(t, responseWriter.Code, http.StatusOK)
test.AssertContains(t, responseWriter.Body.String(), "<title>Self-Service Frontend</title>")
test.AssertContains(t, responseWriter.Body.String(), "<title>Let's Encrypt - Self-Service Portal</title>")
}
func TestBuildIDPath(t *testing.T) {
@ -178,7 +178,7 @@ func TestUnpausePaths(t *testing.T) {
URL: mustParseURL(unpause.GetForm),
})
test.AssertEquals(t, responseWriter.Code, http.StatusOK)
test.AssertContains(t, responseWriter.Body.String(), "request was invalid meaning that we could not")
test.AssertContains(t, responseWriter.Body.String(), "Invalid unpause URL")
// GET with an invalid JWT
responseWriter = httptest.NewRecorder()
@ -187,7 +187,7 @@ func TestUnpausePaths(t *testing.T) {
URL: mustParseURL(fmt.Sprintf(unpause.GetForm + "?jwt=x")),
})
test.AssertEquals(t, responseWriter.Code, http.StatusOK)
test.AssertContains(t, responseWriter.Body.String(), "error was encountered when attempting to unpause your account")
test.AssertContains(t, responseWriter.Body.String(), "An error occurred while unpausing your account")
// GET with a valid JWT
unpauseSigner, err := unpause.NewJWTSigner(cmd.HMACKeyConfig{KeyFile: "../test/secrets/sfe_unpause_key"})
@ -200,7 +200,7 @@ func TestUnpausePaths(t *testing.T) {
URL: mustParseURL(fmt.Sprintf(unpause.GetForm + "?jwt=" + validJWT)),
})
test.AssertEquals(t, responseWriter.Code, http.StatusOK)
test.AssertContains(t, responseWriter.Body.String(), "This action will allow you to resume")
test.AssertContains(t, responseWriter.Body.String(), "Action required to unpause your account")
// POST with no JWT
responseWriter = httptest.NewRecorder()
@ -209,7 +209,7 @@ func TestUnpausePaths(t *testing.T) {
URL: mustParseURL(unpausePostForm),
})
test.AssertEquals(t, responseWriter.Code, http.StatusOK)
test.AssertContains(t, responseWriter.Body.String(), "request was invalid meaning that we could not")
test.AssertContains(t, responseWriter.Body.String(), "Invalid unpause URL")
// POST with an invalid JWT
responseWriter = httptest.NewRecorder()
@ -218,7 +218,7 @@ func TestUnpausePaths(t *testing.T) {
URL: mustParseURL(fmt.Sprintf(unpausePostForm + "?jwt=x")),
})
test.AssertEquals(t, responseWriter.Code, http.StatusOK)
test.AssertContains(t, responseWriter.Body.String(), "An error was encountered when attempting to unpause")
test.AssertContains(t, responseWriter.Body.String(), "An error occurred while unpausing your account")
// POST with a valid JWT redirects to a success page
responseWriter = httptest.NewRecorder()
@ -236,5 +236,5 @@ func TestUnpausePaths(t *testing.T) {
URL: mustParseURL(unpauseStatus),
})
test.AssertEquals(t, responseWriter.Code, http.StatusOK)
test.AssertContains(t, responseWriter.Body.String(), "Your ACME account has been unpaused.")
test.AssertContains(t, responseWriter.Body.String(), "Account successfully unpaused")
}

BIN
sfe/static/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

38
sfe/static/logo.svg Normal file
View File

@ -0,0 +1,38 @@
<?xml version="1.0"?>
<svg width="339" height="81" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
<g>
<title>Layer 1</title>
<g id="svg_1">
<g id="svg_2">
<g id="svg_3">
<path id="svg_4" d="m76.621002,68.878998l0,-31.406998l7.629997,0l0,24.796997l12.153999,0l0,6.609001l-19.783997,0l0,0.000999z" fill="#2C3C69"/>
<path id="svg_5" d="m121.546997,58.098999c0,0.295998 0,0.592003 0,0.888s-0.014999,0.576004 -0.043991,0.843002l-16.013008,0c0.059006,0.620995 0.244003,1.182999 0.555,1.685997s0.709999,0.938004 1.196999,1.308998c0.488007,0.370003 1.035004,0.658005 1.642006,0.864006c0.604996,0.208 1.233994,0.310997 1.884995,0.310997c1.153,0 2.130005,-0.213997 2.928001,-0.642998c0.799004,-0.429001 1.449005,-0.983002 1.952003,-1.664001l5.056992,3.194c-1.034988,1.507996 -2.401993,2.668999 -4.102997,3.482002c-1.700996,0.811996 -3.675995,1.219994 -5.921997,1.219994c-1.656998,0 -3.223999,-0.259995 -4.702003,-0.775993c-1.478996,-0.518005 -2.771996,-1.271004 -3.881996,-2.263c-1.108002,-0.990005 -1.981003,-2.210007 -2.616997,-3.659004s-0.953003,-3.104996 -0.953003,-4.969002c0,-1.802994 0.309998,-3.437996 0.931,-4.900997s1.463997,-2.706001 2.528999,-3.726002c1.064003,-1.021 2.32,-1.811996 3.771004,-2.373997c1.447998,-0.561001 3.015999,-0.843002 4.700996,-0.843002c1.625999,0 3.120003,0.274002 4.480003,0.820999s2.528,1.338001 3.504997,2.373001c0.975998,1.035 1.735992,2.292 2.283997,3.771c0.546005,1.478001 0.819,3.165001 0.819,5.056zm-6.697998,-2.794998c0,-1.153 -0.362,-2.144001 -1.086998,-2.972c-0.724998,-0.827 -1.812004,-1.242001 -3.260002,-1.242001c-0.709999,0 -1.360001,0.111 -1.951996,0.333s-1.108002,0.525002 -1.553001,0.909c-0.443001,0.384998 -0.798004,0.835999 -1.064003,1.354c-0.265999,0.517998 -0.414001,1.057999 -0.443001,1.618l9.359001,0z" fill="#2C3C69"/>
<path id="svg_6" d="m133.167999,52.200001l0,8.461002c0,1.038994 0.199997,1.816994 0.600006,2.337997c0.397995,0.519997 1.11499,0.778 2.151001,0.778c0.353989,0 0.730988,-0.028 1.130997,-0.088997c0.399002,-0.059006 0.731003,-0.147003 0.998001,-0.266006l0.088989,5.323006c-0.502991,0.176994 -1.138992,0.332001 -1.906998,0.465996c-0.769989,0.133003 -1.537994,0.199005 -2.306992,0.199005c-1.479004,0 -2.722,-0.186005 -3.727005,-0.556007c-1.005997,-0.369995 -1.811996,-0.903999 -2.416992,-1.601997c-0.60701,-0.695999 -1.043015,-1.526001 -1.309006,-2.489998c-0.266998,-0.962997 -0.399002,-2.038002 -0.399002,-3.223999l0,-9.338001l-3.548996,0l0,-5.412003l3.503998,0l0,-5.810997l7.141998,0l0,5.810997l5.190002,0l0,5.412003l-5.190002,0z" fill="#2C3C69"/>
<path id="svg_7" d="m161.912994,53.307999c-0.59201,-0.560997 -1.286011,-1.034 -2.085007,-1.418999c-0.798004,-0.383999 -1.640991,-0.577 -2.528,-0.577c-0.681,0 -1.30899,0.133999 -1.884995,0.398998c-0.576996,0.267002 -0.865005,0.726002 -0.865005,1.375c0,0.621002 0.317001,1.064003 0.953003,1.331001s1.664001,0.562 3.082993,0.887001c0.828003,0.177998 1.664001,0.43 2.507004,0.754997s1.604004,0.754005 2.283997,1.286003c0.680008,0.531998 1.227005,1.182999 1.642014,1.951996c0.412994,0.769005 0.620987,1.686005 0.620987,2.75c0,1.391006 -0.280991,2.565002 -0.842987,3.526001c-0.562012,0.960999 -1.294006,1.737 -2.196014,2.329002s-1.914993,1.019997 -3.037994,1.286003c-1.123993,0.266998 -2.248001,0.398994 -3.371002,0.398994c-1.804993,0 -3.570999,-0.287994 -5.302002,-0.864998c-1.728989,-0.575996 -3.17099,-1.427002 -4.32399,-2.551003l4.080994,-4.303001c0.649002,0.710007 1.447998,1.302002 2.395004,1.774002c0.945999,0.473999 1.951996,0.709999 3.016998,0.709999c0.591995,0 1.175995,-0.140999 1.751999,-0.421997c0.576996,-0.279999 0.865005,-0.776001 0.865005,-1.485001c0,-0.681 -0.354004,-1.182999 -1.064011,-1.509003c-0.709991,-0.324997 -1.817993,-0.664993 -3.326996,-1.020996c-0.768997,-0.177002 -1.537994,-0.413002 -2.306992,-0.709c-0.770004,-0.295998 -1.457001,-0.694 -2.062012,-1.197998c-0.605988,-0.502007 -1.10199,-1.123001 -1.485992,-1.863007c-0.384003,-0.737995 -0.576004,-1.625996 -0.576004,-2.660995c0,-1.331001 0.279999,-2.462002 0.843002,-3.394001c0.561996,-0.931999 1.285995,-1.692001 2.173996,-2.284c0.887009,-0.591999 1.87001,-1.027 2.949005,-1.308998s2.151001,-0.422001 3.216995,-0.422001c1.654999,0 3.274002,0.259998 4.856003,0.776001c1.582001,0.517998 2.921005,1.293999 4.014999,2.328999l-3.994995,4.127998z" fill="#2C3C69"/>
<path id="svg_8" d="m179.567993,68.878998l0,-31.406998l21.113998,0l0,6.388l-13.794998,0l0,5.944l13.041,0l0,6.077l-13.041,0l0,6.521l14.593994,0l0,6.476997l-21.912994,0z" fill="#2C3C69"/>
<path id="svg_9" d="m220.675003,68.878998l0,-12.065994c0,-0.621002 -0.053009,-1.212002 -0.154999,-1.774002c-0.104004,-0.562 -0.274002,-1.057003 -0.511002,-1.486c-0.237,-0.428001 -0.569,-0.769001 -0.998001,-1.021c-0.429001,-0.25 -0.968994,-0.377003 -1.619003,-0.377003s-1.220001,0.127003 -1.707993,0.377003c-0.487,0.251999 -0.895004,0.599998 -1.220001,1.042999s-0.569,0.953999 -0.731003,1.529999c-0.162994,0.577 -0.244003,1.175999 -0.244003,1.797001l0,11.976997l-7.319,0l0,-22.091l7.053009,0l0,3.061001l0.088989,0c0.266998,-0.473 0.613007,-0.938 1.042999,-1.396c0.428009,-0.459 0.932007,-0.850998 1.508011,-1.175999c0.576996,-0.325001 1.204987,-0.591999 1.885986,-0.799c0.680008,-0.206001 1.404007,-0.311001 2.173004,-0.311001c1.479004,0 2.735001,0.266998 3.770996,0.799s1.87001,1.220001 2.507004,2.062c0.636002,0.842999 1.094009,1.812 1.375,2.904999c0.279999,1.095001 0.421005,2.189003 0.421005,3.283001l0,13.661999l-7.320999,0l0,0.000999z" fill="#2C3C69"/>
<path id="svg_10" d="m246.713013,53.929001c-0.415009,-0.532001 -0.977005,-0.959999 -1.686005,-1.285999c-0.709991,-0.325001 -1.436005,-0.488003 -2.173996,-0.488003c-0.770004,0 -1.464005,0.155003 -2.085007,0.466s-1.153,0.726002 -1.597,1.242001c-0.442993,0.518002 -0.791992,1.117001 -1.042999,1.797001c-0.250992,0.681004 -0.376999,1.404003 -0.376999,2.174c0,0.768997 0.117996,1.493004 0.354996,2.173004c0.236008,0.681 0.583008,1.279999 1.042007,1.796997c0.457993,0.517998 1.005005,0.924995 1.641998,1.220001c0.636002,0.295998 1.352997,0.443001 2.151001,0.443001c0.738007,0 1.470993,-0.139999 2.195007,-0.421005s1.30899,-0.687996 1.751984,-1.220001l4.037018,4.924004c-0.917023,0.887001 -2.101013,1.582001 -3.549011,2.084999c-1.44899,0.501999 -2.987,0.753998 -4.612991,0.753998c-1.74501,0 -3.374008,-0.266998 -4.887009,-0.798996c-1.511993,-0.531998 -2.826004,-1.308998 -3.940994,-2.329002c-1.115997,-1.019997 -1.992996,-2.253998 -2.632996,-3.702995s-0.959,-3.090004 -0.959,-4.924004c0,-1.804001 0.318985,-3.431 0.959,-4.880001c0.639999,-1.447998 1.516998,-2.683998 2.632996,-3.703999c1.11499,-1.021 2.429993,-1.804001 3.940994,-2.351002c1.513,-0.546997 3.126999,-0.820999 4.843002,-0.820999c0.798004,0 1.589005,0.074001 2.373001,0.223c0.783005,0.147003 1.536987,0.348 2.261993,0.599003s1.390015,0.562 1.996002,0.931999s1.132019,0.776001 1.575012,1.219997l-4.212006,4.877003z" fill="#2C3C69"/>
<path id="svg_11" d="m268.032013,52.776001c-0.325989,-0.089001 -0.644012,-0.146999 -0.95401,-0.177002s-0.613983,-0.044998 -0.908997,-0.044998c-0.975983,0 -1.796997,0.177998 -2.462006,0.530998c-0.664978,0.354 -1.196991,0.781002 -1.596985,1.283001c-0.399017,0.500999 -0.688019,1.047001 -0.865021,1.636997s-0.265991,1.105003 -0.265991,1.548004l0,11.324997l-7.274994,0l0,-22.063999l7.009003,0l0,3.194l0.088989,0c0.562012,-1.132 1.359009,-2.055 2.395996,-2.77c1.034027,-0.715 2.232025,-1.071999 3.593018,-1.071999c0.294983,0 0.583984,0.015999 0.86499,0.044998c0.279999,0.029003 0.51001,0.074001 0.688019,0.133003l-0.312012,6.431999z" fill="#2C3C69"/>
<path id="svg_12" d="m285.122009,72.206001c-0.442993,1.153 -0.938995,2.181 -1.485992,3.083c-0.546997,0.901001 -1.197021,1.669998 -1.951019,2.306999c-0.753998,0.636002 -1.641998,1.114998 -2.661987,1.441002c-1.019989,0.324997 -2.226013,0.487999 -3.61499,0.487999c-0.681,0 -1.382996,-0.044998 -2.106018,-0.134003c-0.725983,-0.088997 -1.354004,-0.207001 -1.885986,-0.353996l0.798981,-6.121002c0.354004,0.116997 0.746002,0.213997 1.176025,0.288002c0.427979,0.072998 0.819977,0.110001 1.174988,0.110001c1.123993,0 1.937012,-0.259003 2.440002,-0.776001c0.501984,-0.518005 0.931,-1.249001 1.286011,-2.195l0.709991,-1.818001l-9.22699,-21.736l8.072998,0l4.923981,14.195l0.132996,0l4.391998,-14.195l7.718018,0l-9.893005,25.417z" fill="#2C3C69"/>
<path id="svg_13" d="m321.496002,57.745003c0,1.537994 -0.237,3.016998 -0.709991,4.435997c-0.473999,1.419998 -1.161011,2.668999 -2.062012,3.748001c-0.902008,1.080002 -2.003998,1.945 -3.304993,2.596001c-1.302002,0.649002 -2.779999,0.975998 -4.437012,0.975998c-1.359985,0 -2.645996,-0.273003 -3.859009,-0.82s-2.15799,-1.293999 -2.838989,-2.239998l-0.087982,0l0,13.085999l-7.275024,0l0,-32.739002l6.920013,0l0,2.706001l0.132996,0c0.681,-0.887001 1.618988,-1.662998 2.816986,-2.328999c1.197021,-0.665001 2.609009,-0.998001 4.236023,-0.998001c1.596985,0 3.044983,0.311001 4.346985,0.931999c1.300995,0.621002 2.402008,1.464001 3.304993,2.528s1.597015,2.299999 2.085022,3.704002c0.488007,1.404999 0.731995,2.876999 0.731995,4.414001zm-7.053009,0c0,-0.709999 -0.110016,-1.403999 -0.332001,-2.085003c-0.222015,-0.68 -0.548004,-1.278999 -0.97699,-1.797001c-0.429016,-0.516998 -0.969025,-0.938 -1.619019,-1.264s-1.403992,-0.487999 -2.261993,-0.487999c-0.828003,0 -1.567993,0.162998 -2.217987,0.487999c-0.651001,0.325001 -1.206024,0.754002 -1.664001,1.285999c-0.459015,0.532001 -0.813019,1.139 -1.064026,1.818001c-0.251984,0.681004 -0.376984,1.375004 -0.376984,2.085003s0.125,1.404999 0.376984,2.084999c0.251007,0.681 0.605011,1.285995 1.064026,1.818001c0.457977,0.531998 1.013,0.961998 1.664001,1.286995c0.648987,0.325005 1.389984,0.487 2.217987,0.487c0.856995,0 1.610992,-0.161995 2.261993,-0.487s1.190002,-0.754997 1.619019,-1.286995s0.754974,-1.146004 0.97699,-1.841003c0.221008,-0.693001 0.332001,-1.394997 0.332001,-2.104996z" fill="#2C3C69"/>
<path id="svg_14" d="m333.118011,52.200001l0,8.461002c0,1.038994 0.200012,1.816994 0.600006,2.337997c0.39798,0.519997 1.11499,0.778 2.151001,0.778c0.354004,0 0.730988,-0.028 1.130981,-0.088997c0.399017,-0.059006 0.731018,-0.147003 0.998016,-0.266006l0.088989,5.323006c-0.502991,0.176994 -1.139008,0.332001 -1.906982,0.465996c-0.77002,0.133003 -1.538025,0.199005 -2.307007,0.199005c-1.479004,0 -2.722015,-0.186005 -3.72702,-0.556007c-1.005981,-0.369995 -1.811981,-0.903999 -2.416992,-1.601997c-0.606995,-0.695999 -1.042999,-1.526001 -1.30899,-2.489998c-0.266998,-0.962997 -0.399017,-2.038002 -0.399017,-3.223999l0,-9.338001l-3.548981,0l0,-5.412003l3.503998,0l0,-5.810997l7.141998,0l0,5.810997l5.190002,0l0,5.412003l-5.190002,0z" fill="#2C3C69"/>
</g>
</g>
<path id="svg_15" d="m145.009995,36.869999c-2.182999,0 -3.891998,1.573002 -3.891998,3.582001c0,2.116001 1.438995,3.536999 3.582001,3.536999c0.182999,0 0.355988,-0.016998 0.518997,-0.049999c-0.343002,1.566002 -1.852005,2.690002 -3.278,2.915001l-0.290009,0.046001l0,3.376999l0.376007,-0.035999c1.729996,-0.165001 3.438995,-0.951 4.690994,-2.157001c1.632004,-1.572998 2.49501,-3.843998 2.49501,-6.568001c0,-2.691998 -1.76799,-4.646 -4.203003,-4.646z" fill="#2C3C69"/>
</g>
<g id="svg_16">
<path id="svg_17" d="m46.488998,37.568001l-8.039997,0l0,-4.128002c0,-3.296997 -2.683002,-5.979 -5.98,-5.979c-3.297001,0 -5.979,2.683002 -5.979,5.979l0,4.128002l-8.040001,0l0,-4.128002c0,-7.73 6.288998,-14.019999 14.02,-14.019999s14.02,6.289 14.02,14.019999l0,4.128002l-0.001003,0z" fill="#F9A11D"/>
</g>
<path id="svg_18" d="m49.731998,37.568001l-34.524998,0c-1.474001,0 -2.68,1.205997 -2.68,2.68l0,25.540001c0,1.473999 1.205999,2.68 2.68,2.68l34.524998,0c1.474003,0 2.68,-1.206001 2.68,-2.68l0,-25.540001c0,-1.474003 -1.205997,-2.68 -2.68,-2.68zm-15.512997,16.769001l0,3.460995c0,0.966003 -0.784,1.749001 -1.749001,1.749001s-1.749001,-0.783997 -1.749001,-1.749001l0,-3.459995c-1.076,-0.611 -1.803001,-1.764 -1.803001,-3.09c0,-1.962002 1.591,-3.552002 3.552002,-3.552002c1.961998,0 3.551998,1.591 3.551998,3.552002c0,1.325001 -0.727001,2.478001 -1.802998,3.089001z" fill="#2C3C69"/>
<path id="svg_19" d="m11.707001,33.759998l-8.331,0c-1.351001,0 -2.446,-1.094997 -2.446,-2.445999s1.094999,-2.445999 2.446,-2.445999l8.331,0c1.351,0 2.445999,1.095001 2.445999,2.445999s-1.096001,2.445999 -2.445999,2.445999z" fill="#F9A11D"/>
<path id="svg_20" d="m17.575001,20.655001c-0.546001,0 -1.097,-0.182001 -1.552,-0.557001l-6.59,-5.418999c-1.043001,-0.858002 -1.194,-2.399 -0.335001,-3.443001c0.858,-1.042999 2.399,-1.194 3.443001,-0.336l6.59,5.419001c1.042999,0.858 1.194,2.399 0.334999,3.442999c-0.483,0.589001 -1.184,0.893002 -1.890999,0.893002z" fill="#F9A11D"/>
<path id="svg_21" d="m32.469002,14.895c-1.351002,0 -2.446003,-1.095001 -2.446003,-2.446001l0,-8.396999c0,-1.351 1.095001,-2.446 2.446003,-2.446s2.445999,1.095 2.445999,2.446l0,8.396999c0,1.351 -1.095001,2.446001 -2.445999,2.446001z" fill="#F9A11D"/>
<g id="svg_22">
<g id="svg_23">
<path id="svg_24" d="m47.362999,20.655001c-0.707001,0 -1.406998,-0.304001 -1.890999,-0.893002c-0.858002,-1.042999 -0.708,-2.584999 0.334999,-3.442999l6.59,-5.419001c1.044003,-0.858 2.585003,-0.706999 3.442997,0.336c0.858002,1.042999 0.708,2.584999 -0.334999,3.443001l-6.589996,5.418999c-0.455002,0.375 -1.005001,0.557001 -1.552002,0.557001z" fill="#F9A11D"/>
</g>
</g>
<path id="svg_25" d="m61.563004,33.759998l-8.410004,0c-1.351002,0 -2.445999,-1.094997 -2.445999,-2.445999s1.094997,-2.445999 2.445999,-2.445999l8.410004,0c1.350998,0 2.445999,1.095001 2.445999,2.445999s-1.095001,2.445999 -2.445999,2.445999z" fill="#F9A11D"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -1,45 +0,0 @@
/* Universal styles */
* {
font-family: system-ui, sans-serif;
}
/* Basic layout */
body {
max-width: 40em;
margin: 2em auto 0;
padding: 0 1rem;
}
/* Link styling */
a {
color: #3771c8;
}
a:hover {
color: #274f8c;
}
/* Content styling */
.content {
display: none;
border: 1px solid #c2e9e9;
background-color: #c2e9e9;
padding: 1.5rem;
border-radius: 0 0.25rem 0.25rem 0.25rem;
}
.content.active {
display: block;
}
/* Button styling */
button {
font-size: 1rem;
}
button.primary {
color: #fff;
background-color: #3771c8;
padding: 0.625rem 1.6rem;
font-weight: 600;
border-radius: 0.25rem;
border: none;
}
button.primary:hover {
background-color: #285999;
cursor: pointer;
}
/* jep 2024 */

View File

@ -1,16 +1,117 @@
{{define "meta"}}
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="stylesheet" href="/static/main.css">
{{define "header"}}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Let's Encrypt - Self-Service Portal</title>
<link rel="icon" type="image/x-icon" href="/static/favicon.ico">
<style>
* {
font-family: system-ui, sans-serif;
}
html, body {
height: 100%;
margin: 0;
padding: 0;
width: 100%;
display: flex;
flex-direction: column;
min-height: 100vh;
}
html {
line-height: 1.15;
}
div {
display: block;
unicode-bidi: isolate;
}
body {
flex: 1;
align-items: center;
}
h1, h2, h3, h4, h5, h6 {
color: #003C66;
font-weight: normal;
}
h1 {
font-size: 2em;
margin: .67em 0;
display: block;
}
a, a:hover {
color: #285999;
}
.header, .footer {
width: 100%;
background-color: #f8f8f8;
border-bottom: 1px solid #eee;
}
.header {
padding: 10px 20px;
box-sizing: border-box;
}
.footer {
margin-top: auto;
}
.container {
max-width: 45em;
margin: 0 auto;
width: 100%;
}
.section, .highlight {
width: 100%;
max-width: 45em;
padding: 10px 20px;
box-sizing: border-box;
}
.section {
padding: 10px 20px;
margin-bottom: -20px;
}
.highlight {
margin-top: 20px;
margin-bottom: 5px;
background-color: #e9f0fa;
border-left: 5px solid #003C66;
border-radius: 8px;
}
button.primary {
color: #fff;
background-color: #003C66;
border: none;
padding: 10px 20px;
cursor: pointer;
transition: background-color 0.3s;
border-radius: 8px;
margin: 10px 0px 0px;
font-family: inherit;
font-size: 100%;
line-height: 1.15;
overflow: visible;
text-transform: none;
}
button.primary:hover {
background-color: #285999;
}
</style>
</head>
<body>
<div class="header">
<div class="container">
<img src="/static/logo.svg" alt="Let's Encrypt" style="height: 50px;">
</div>
</div>
{{ end }}
{{ define "footer" }}
<footer>
<div>
<p><a href="https://letsencrypt.org">Let's Encrypt</a> is a free, automated, and open certificate authority brought to you by the nonprofit <a href="https://www.isrg.org/">Internet Security Research Group (ISRG)</a>.</p>
</div>
</footer>
<div class="footer">
<div class="container">
<p>
<a href="https://letsencrypt.org">Let's Encrypt</a> is a free, automated, and open certificate authority brought to you by the nonprofit <a href="https://www.isrg.org/">Internet Security Research Group (ISRG)</a>.
</p>
</div>
</div>
</body>
</html>
{{ end }}