---+ Generating WebID-watermarked X.509 Certificates for Use with ODS
%TOC%
---++Why use X.509 Certificates for Authentication?
Password-based authentication is inherently difficult to maintain, and presents an awkward option in the context of RESTful client/server interactions over local and wide area networks (LANs and WANs).
X.509 Certificates provide an elegant alternative which is more easily maintained, with a more streamlined user experience overall.
---++How are X.509 Certificates generated?
Thanks to its Virtuoso underpinnings, ODS possesses built-in functionality for generating X.509 Certificates with WebID watermarks.
With ODS, certificate generation is typically done through a web browser. The specific process varies because each browser vendor has chosen their own approach to manage Certificates and their associated Private Keys.
Below, we cover certificate generation for several browsers, with keystore persistence handled variously by the host operating system or the Browser.
---++Certificate Generation & Keystore Management
| *Browser* | *Generation* | *OS-based Keystore* | *Browser-based Keystore* | *Notes* |
| *Chrome* | <keygen/>
| Y | N | |
| *Firefox* | .NET-based browser plug-in | Y | N | |
| *Firefox* | <keygen/>
| N | Y | |
| *IE* | OpenLink X.509 Certificate Generator plug-in | Y | N | When using the user-friendly, Wizard-style interface of this plug-in, you (the issuer) must create a root CA certificate before generating any WebID-watermarked certificates. |
| *IE* | Windows-native generator | Y %BR% (Windows only) | N | Best reserved for advanced users. |
| *Opera* | <keygen/>
| N | Y | |
| *Safari* | <keygen/>
| Y | N | |
---++ X.509 Certificate Generation Methods
---+++ Using ODS
* [[ODSGenerateWebIDX509CertBrsKeystore][Generate an X.509 Certificate with a WebID watermark that's stored by browser keystore]]
---+++ Using Virtuoso Certificate Generation Wizard (Windows only)
* [[ODSGenerateWebIDX509CertOSKeystore][Generate an X.509 Certificate with a WebID watermark that's stored by OS keystore]]
---+++ Using Windows-Native Keystore
1. [[http://swimmingpooldotnet.wordpress.com/2009/12/15/how-to-view-local-machine-keystore-windows-xp/][View Local Machine KeyStore and enable a snap-in]].
1. [[http://technet.microsoft.com/en-us/library/bb727068.aspx][Generate Certificate Guide]].
1. Import the generated Cert in ODS by pasting its content in the X.509 Certificate text-area presented at User Profile -> Edit -> Security -> X.509 Certificates tab page.
---+++ Using openssl
You can manually use OpenSSL to generate the certificate, and then import that Certificate to ODS through its PEM Import UI. Then, both Certificate and Private Key must be imported into the OS- and/or browser-based keystore. Finally, the Cert results in Public Key and WebID relation in Profile Graph.
---++++Basic Steps
1 [[http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtGenerateX509Cert][Generate x.509 Certificate]].
1 [[http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtSetupSSLFileSystem][Set up HTTPS Support in Virtuoso]].
1 [[http://ods.openlinksw.com/wiki/ODS/VirtODSSecurityWebID#Configure%20your%20ODS%20Account%20to%20use%20the%20WebID%20Protocol][Configure your ODS Account to use the WebID Protocol]].
1 [[http://ods.openlinksw.com/wiki/ODS/VirtODSSecurityWebID#Test%20the%20setup][Test the setup]].
---++++ Browser-Specific Notes
* Firefox: You must import the Private Key into the OS- and/or Browser-based keystore(s) using the relevant import mechanism.
* Opera: You must import the Private Key into the OS- and/or Browser-based keystore(s) using the relevant import mechanism.
---++++ OS-Specific Notes
* Mac OS X: OpenSSL is not needed. The Mac-native keystore lets you create certificates, based on Apple's root CA.
* Windows: OpenSSL is not needed. The Windows-native keystore lets you create certificates, based on Microsoft's root CA.
---++Related
* [[http://www.youtube.com/watch?v=gzqHVUb3qrw&feature=share][Power of WebID + OpenID Hybrid Protocol via Internet Explorer & Windows]]
* [[http://www.youtube.com/watch?v=eXoxUo7Py4M&feature=share][Using Safari to Demonstrate WebID + OpenID Hybrid Protocol Power!]]
* [[http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtSPARQLEndpointProtection][Safeguarding your Virtuoso-hosted SPARQL Endpoint]]
* [[http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtTipsAndTricksGuideSPARQLEndpointProtection][SPARQL Endpoint Protection Methods Collection]]
* [[http://docs.openlinksw.com/virtuoso/][Virtuoso documentation]]
* [[http://docs.openlinksw.com/virtuoso/rdfsparql.html#rdfsupportedprotocolendpoint][SPARQL Service Endpoint]]
* [[http://docs.openlinksw.com/virtuoso/rdfsparql.html#rdfsupportedprotocolendpointuri][Service Endpoint Security]]
* [[http://docs.openlinksw.com/virtuoso/rdfsparql.html#sparqwebservicetbl][Managing a SPARQL Web Service Endpoint]]
* [[http://docs.openlinksw.com/virtuoso/rdfsparql.html][SPARQL]]
* [[http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtTipsAndTricksGuide][Virtuoso Tips and Tricks Collection]]
* [[http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtSPARQLDET][SPARQL Endpoint DET Configuration Guide]]
* [[http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtSPARQLSecurityWebID][WebID Protocol & SPARQL Endpoint ACLs Tutorial]]
* [[http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtOAuthSPARQL][SPARQL OAuth Tutorial]]
* [[http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtTipsAndTricksGuideSPARQLEndpoints][Securing SPARQL endpoints]]
* [[OdsSPARQLAuth][SPARUL over SPARQL using the http://cname:port/sparql-auth endpoint]]
* [[http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtAuthServerUI][Virtuoso Authentication Server UI]]
* [[http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtSPARQLSSL][Manage a SPARQL-WebID based Endpoint]]
* [[VirtODSSecurityWebID][WebID Protocol Support in OpenLink Data Spaces]].
* Manage ODS Datadspaces Objects WebID Access Control Lists (ACLs):
* [[ODSBriefcaseWebID][ODS Briefcase WebID based ACL Guide]]
* [[ODSBriefcaseWebIDPerson][Person Entity WebID based ACL Guide]]
* [[ODSBriefcaseWebIDGroup][Group Entity WebID based ACL Guide]]
* [[ODSBriefcaseWebIDPublic][Public WebID based ACL Guide]]
* [[ODSFeedManagerWebIDACL][ODS Feed Manager WebID based ACL Guide]]
* [[ODSFeedManagerWebIDACLPerson][Person Entity Specific ACL]]
* [[ODSFeedManagerWebIDACLGroup][Group Entity Specific ACL]]
* [[ODSFeedManagerWebIDACLPublic][Public Specific ACL for anyone with a WebID]]
* [[ODSCalendarWebIDACL][ODS Calendar WebID based ACL Guide]]
* [[ODSCalendarWebIDACLPerson][Person Entity Specific ACL]]
* [[ODSCalendarWebIDACLGroup][Group Entity Specific ACL]]
* [[ODSCalendarWebIDACLPublic][Public Specific ACL for anyone with a WebID]]
* [[ODSBookmarksWebIDACL][ODS Bookmark Manager WebID based ACL Guide]]
* [[ODSBookmarksWebIDACLPerson][Person Entity Specific ACL]]
* [[ODSBookmarksWebIDACLGroup][Group Entity Specific ACL]]
* [[ODSBookmarksWebIDACLPublic][Public Specific ACL for anyone with a WebID]]
* [[ODSAddressBookWebIDACL][ODS Addressbook WebID based ACL Guide]]
* [[ODSAddressBookWebIDACLPerson][Person Entity Specific ACL]]
* [[ODSAddressBookWebIDACLGroup][Group Entity Specific ACL]]
* [[ODSAddressBookWebIDACLPublic][Public Specific ACL for anyone with a WebID]]
* [[ODSPkiSetup][Guide for Set up a X.509 certificate issuer and HTTPS listener and generate ODS user certificates]]
* [[ODSSetupSSL][Configure Virtuoso+ODS instance as an X.509 Certificate Authority and HTTPS listener]]
* [[http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtSetupSSL][Configure Virtuoso instance as an X.509 Certificate Authority and HTTPS listener]]
* [[VirtODSPubSubHub][Setting up PubSubHub in ODS]]
* [[VirtPubSubHub][PubSubHubBub Demo Client Example]]
* [[VirtFeedPubSubHub][Feed subscription via PubSubHub protocol Example ]]
* [[VirtPubSubHubACL][Setting Up PubSubHub to use WebID Protocol or IP based control lists]]
* [[OdsKeyImport][CA Keys Import using Conductor]]
* [[ODSGenerateWebIDX509CertOSKeystore][Generate an X.509 Certificate (with a WebID watermark) to be managed by host operating system keystore]]
* [[ODSGenerateWebIDX509CertBrsKeystore][Generate an X.509 Certificate (with a WebID watermark) to be managed by a browser-based keystore]]
* [[ODSWebIDIdP][Using Virtuoso's WebID Verification Proxy Service with a WebID-bearing X.509 certificate]]
* [[ODSWebIDIdpProxy][Using Virtuoso's WebID Identity Provider (IdP) Proxy Service with an X.509 certificate]]
* [[ODSBriefcaseWebIDShareFile][ODS Briefcase WebID Protocol Share File Guide]]
* [[http://esw.w3.org/topic/foaf+ssl][WebID Protocol Specification]]
* [[https://foaf.me/simpleLogin.php][Test WebID Protocol Certificate page]]
* [[http://test.foafssl.org/cert/][WebID Protocol Certificate Generation page]]