{"id":329487,"date":"2026-06-21T20:26:55","date_gmt":"2026-06-21T20:26:55","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/0cert\/"},"modified":"2026-06-21T20:05:07","modified_gmt":"2026-06-21T20:05:07","slug":"0cert","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/0cert\/","author":18015298,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"trunk","tested":"7.0","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"0Cert","header_author":"Dimitry Ulyanov","header_description":"Add 0Cert identity-based encryption verification to your WordPress site. Zero certificates. Zero renewals.","assets_banners_color":"292c2a","last_updated":"2026-06-21 20:05:07","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/0cert.io\/wordpress-plugin","header_author_uri":"https:\/\/0cert.io","rating":0,"author_block_rating":0,"active_installs":0,"downloads":38,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":[],"upgrade_notice":{"1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3580950,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3580950,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":[],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3580950,"resolution":"1","location":"assets","locale":"","width":1200,"height":900}},"screenshots":{"1":"Settings page \u2014 enter your keys and verify with the KGC","2":"Verified status \u2014 0Cert active on your site","3":"0 Browser showing the verified badge on a 0Cert-protected WordPress site"}},"plugin_section":[],"plugin_tags":[2191,12167,22649,600,1536],"plugin_category":[54],"plugin_contributors":[268264],"plugin_business_model":[],"class_list":["post-329487","plugin","type-plugin","status-publish","hentry","plugin_tags-certificate","plugin_tags-encryption","plugin_tags-identity","plugin_tags-security","plugin_tags-ssl","plugin_category-security-and-spam-protection","plugin_contributors-dimaulianov","plugin_committers-dimaulianov"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/0cert\/assets\/icon-256x256.png?rev=3580950","icon_2x":"https:\/\/ps.w.org\/0cert\/assets\/icon-256x256.png?rev=3580950","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/0cert\/assets\/screenshot-1.png?rev=3580950","caption":"Settings page \u2014 enter your keys and verify with the KGC"}],"raw_content":"<!--section=description-->\n<p>0Cert replaces traditional SSL certificate authorities with Certificateless Public Key Cryptography (CL-PKC). Instead of trusting one of 150 certificate authorities, your domain name IS your cryptographic identity.<\/p>\n\n<p>This plugin adds 0Cert protection to any WordPress site in minutes \u2014 no server configuration required.<\/p>\n\n<p><strong>What it does:<\/strong><\/p>\n\n<ul>\n<li>Adds <code>X-0Cert-*<\/code> verification headers to all pages<\/li>\n<li>Serves the <code>\/.well-known\/0cert<\/code> endpoint that 0 Browser checks automatically<\/li>\n<li>Verifies your keys against the Key Generation Center (KGC) on setup<\/li>\n<li>Shows your 0Cert status in the WordPress admin<\/li>\n<\/ul>\n\n<p><strong>What visitors see:<\/strong><\/p>\n\n<p>Users of 0 Browser (iOS) see a green <strong>0Cert Verified<\/strong> badge when visiting your site instead of the standard SSL lock icon. Your site's identity is cryptographically bound to your domain \u2014 not just promised by a certificate authority.<\/p>\n\n<p><strong>How it works:<\/strong><\/p>\n\n<ol>\n<li>You register your domain at <a href=\"https:\/\/app.0cert.io\">app.0cert.io<\/a> or in the 0 Browser iOS app<\/li>\n<li>A Key Generation Center issues a partial key for your domain<\/li>\n<li>You generate your own user secret locally (never shared with anyone)<\/li>\n<li>The two combine into a full private key \u2014 even the KGC cannot decrypt your traffic<\/li>\n<li>Install this plugin, paste your keys, save \u2014 done<\/li>\n<\/ol>\n\n<p><strong>Zero configuration required:<\/strong><\/p>\n\n<ul>\n<li>No server-level changes needed<\/li>\n<li>No DNS certificate records to manage<\/li>\n<li>No annual renewals<\/li>\n<li>Works on any WordPress hosting<\/li>\n<\/ul>\n\n<p><strong>Open source:<\/strong><\/p>\n\n<p>The full protocol, KGC server, iOS browser, and this plugin are all open source at <a href=\"https:\/\/github.com\/0cert\">github.com\/0cert<\/a>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>0cert<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through the Plugins menu in WordPress<\/li>\n<li>Go to <strong>Settings -&gt; 0Cert<\/strong><\/li>\n<li>Get your keys from <a href=\"https:\/\/app.0cert.io\">app.0cert.io<\/a> or the 0 Browser iOS app<\/li>\n<li>Paste your Full Private Key and User Secret, click <strong>Save and Verify<\/strong><\/li>\n<li>Add a DNS TXT record: <code>TXT @ ibc-kgc=https:\/\/kgc.0cert.io<\/code><\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20to%20change%20anything%20on%20my%20server%3F\"><h3>Do I need to change anything on my server?<\/h3><\/dt>\n<dd><p>No. The plugin handles everything through WordPress hooks \u2014 no .htaccess changes, no server configuration, no root access required.<\/p><\/dd>\n<dt id=\"what%20are%20the%20full%20private%20key%20and%20user%20secret%3F\"><h3>What are the Full Private Key and User Secret?<\/h3><\/dt>\n<dd><p>These are generated when you register your domain at app.0cert.io or in the 0 Browser iOS app. They are cryptographic keys unique to your domain. The User Secret never leaves your device during generation \u2014 even the KGC never sees it. Store them securely.<\/p><\/dd>\n<dt id=\"can%20the%20kgc%20decrypt%20my%20traffic%3F\"><h3>Can the KGC decrypt my traffic?<\/h3><\/dt>\n<dd><p>No. This is a structural property of the CL-PKC protocol. The KGC only issues a partial key. Your full private key is assembled by combining the partial key with your locally generated user secret. Without your user secret, nobody \u2014 including the KGC \u2014 can reconstruct your full key.<\/p><\/dd>\n<dt id=\"what%20if%20i%20want%20to%20run%20my%20own%20kgc%3F\"><h3>What if I want to run my own KGC?<\/h3><\/dt>\n<dd><p>You can self-host the KGC server \u2014 see <a href=\"https:\/\/github.com\/0cert\/kgc-server\">github.com\/0cert\/kgc-server<\/a>. Enter your KGC URL in the plugin settings under KGC Server.<\/p><\/dd>\n<dt id=\"does%20this%20replace%20ssl%2Fhttps%3F\"><h3>Does this replace SSL\/HTTPS?<\/h3><\/dt>\n<dd><p>No \u2014 0Cert runs alongside standard SSL. HTTPS handles transport encryption as normal. 0Cert adds identity verification on top, so that 0 Browser users can see your site's identity is cryptographically bound to your domain rather than vouched for by a certificate authority.<\/p><\/dd>\n<dt id=\"will%20this%20slow%20down%20my%20site%3F\"><h3>Will this slow down my site?<\/h3><\/dt>\n<dd><p>No. The KGC verification only happens when you save your settings, not on every page load. The headers and verification endpoint add negligible overhead.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>KGC verification on settings save<\/li>\n<li>X-0Cert-* headers on all responses<\/li>\n<li>\/.well-known\/0cert verification endpoint<\/li>\n<li>WordPress admin settings page with status indicator<\/li>\n<\/ul>","raw_excerpt":"Add 0Cert identity-based encryption verification to your WordPress site. Zero certificates. Zero renewals.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/329487","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=329487"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/dimaulianov"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=329487"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=329487"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=329487"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=329487"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=329487"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=329487"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}