Certificate’s integration in the issuer Website
Introduction
The purpose of this page is to describe how you can display BCdiploma certificates on a domain other than bcdiploma.com, such as your own.
By default, BCdiploma certificates are accessible and displayed at the following URLs, depending on the environment:
- Staging: https://certificate-staging.bcdiploma.com
- Production (data located in the EU zone): https://certificate.bcdiploma.com
- Production (data located in the US zone): https://certificate-cus.bcdiploma.com
4 different methods are documented here to make them accessible on the issuer's domain, for example: https://certificate.your-domain.com or https://digitalcredential.your-domain.com
- Recommended solution 1: setting up your reverse proxy (required if you want a path on an existing domain, such as
your-domain.com/certificates) - Recommended solution 2: the BCdiploma-operated reverse proxy (your custom domain through a few DNS records, no infrastructure on your side)
- Recommended solution 3: delegating your subdomain to BCdiploma (a single DNS operation, done once — we manage everything afterwards, renewals included)
- Not recommended solution: implementation of an iframe system
Warning
If your institution changes its domain or deactivates the associated hosting, the published URLs will no longer be accessible unless corrective action is taken. Our platform does not rewrite URLs and does not perform any redirection: it is the responsibility of the institution’s IT team to maintain the configuration over time and to implement redirections from the old domain to the new one, so that all existing URLs continue to resolve.
Finally, we recommend regularly monitoring the availability of your URLs as well as the expiration of your domains and TLS certificates, and adding this point to your checklist for any domain change or rebranding.
Recommended method 1: with your reverse proxy
How it works
This article describes how to set up a reverse proxy so that BCdiploma certificates are displayed on your domain rather than on the bcdiploma.com domain. In concrete terms, it is about setting up, at the network level, a transparent relay (proxy) between your domain (e.g. certificates.your-domain.com) and the bcdiploma.com domain.
Note that there is a multitude of reverse proxies on the market (nginx, apache, etc.) and as many types of implementation in information systems. The documentation below only describes the principles to implement on your infrastructure, with the help of your IT team who is aware of your specificities.
Advantages:
- Allows you to use a path on an existing domain (e.g.
your-domain.com/certificates) - Maximum compatibility with social networks
- Little maintenance to do once set it up
- Maximum compatibility with any browser
- Totally transparent for the end user
Disadvantages:
- Requires an initial intervention from your IT/infrastructure team
Prerequisite: header size settings
To support the CSP headers, you need to change some settings in your reverse proxy:
proxy_busy_buffers_size 32k;
proxy_buffers 4 16k;
proxy_buffer_size 16k;
Step 1: set up a redirection for the staging environment
You need to redirect incoming requests to a specific domain on your network that will be used for the staging (e.g. certificate-staging.your-domain.com) to the BCdiploma staging domain, i.e. certificate-staging.bcdiploma.com. This redirection must be combined with a custom-host header with your your-domain.com domain name as value.
Examples of configuration files for different reverse-proxy servers:
- nginx
# BEGIN SERVER certificate-staging.your-domain.com:443
server {
listen WWW.XXX.YYY.ZZZ:443 ssl;
include snippets/ssl-certificates.conf;
include snippets/ssl-params.conf;
server_name certificate-staging.your-domain.com;
location / {
# we add a custom-host parameter in the header
# which corresponds to the domain for which the certificates can be viewed
proxy_set_header custom-host your-domain.com;
proxy_pass https://certificate-staging.bcdiploma.com;
}
access_log /var/log/nginx/certificate-staging.your-domain.com-access.log upstream_time;
error_log /var/log/nginx/certificate-staging.your-domain.com-error.log;
}
# END SERVER certificate-staging.your-domain.com:443
- Apache
<VirtualHost *:443>
ServerName certificate-staging.your-domain.com:443
SSLEngine on
SSLProxyEngine On
# SSL certificate config
SSLCertificateFile /etc/apache2/ssl/**************************
SSLCertificateKeyFile /etc/apache2/ssl/***********************
SSLCertificateChainFile /etc/apache2/ssl/*********************
ErrorLog /var/log/apache2/ssl_443_certificate_error_log
TransferLog /var/log/apache2/ssl_443_certificate_access_log
LogLevel debug
CustomLog /var/log/apache2/ssl_request_log "%t %h %{SSL_PROTOCOL}x \"%r\" %b"
SetEnv nokeepalive ssl-unclean-shutdown
SetEnv proxy-nokeepalive 1
ProxyRequests Off
RequestHeader set custom-host "your-domain.com"
ProxyPass / https://certificate-staging.bcdiploma.com:443/ connectiontimeout=300 timeout=300
ProxyPassReverse / https://certificate-staging.bcdiploma.com:443/
</VirtualHost>
Tell our services your staging domain thus set up: we will update the blockchain so that the staging certificates will be accessible on this address as soon as possible.
Step 2: set up redirections for the production environment
Warning
If your data is located in the US zone, remember to change certificate.bcdiploma.com to certificate-cus.bcdiploma.com in the configurations below.
Repeat the above operations to redirect requests from your production domain (e.g. certificate.your-domain.com) to BCdiploma's production domain, namely certificate.bcdiploma.com, ex:
- nginx
# BEGIN SERVER certificate.your-domain.com:443
server {
listen WWW.XXX.YYY.ZZZ:443 ssl;
include snippets/ssl-certificates.conf;
include snippets/ssl-params.conf;
server_name certificate.your-domain.com;
location / {
# we add a custom-host parameter in the header
# which corresponds to the domain for which the certificates can be viewed
proxy_set_header custom-host your-domain.com;
proxy_pass https://certificate.bcdiploma.com;
}
access_log /var/log/nginx/certificate.your-domain.com-access.log upstream_time;
error_log /var/log/nginx/certificate.your-domain.com-error.log;
}
# END SERVER certificate.your-domain.com:443
- apache
<VirtualHost *:443>
ServerName certificate.your-domain.com:443
SSLEngine on
SSLProxyEngine On
# SSL certificate config
SSLCertificateFile /etc/apache2/ssl/**************************
SSLCertificateKeyFile /etc/apache2/ssl/***********************
SSLCertificateChainFile /etc/apache2/ssl/*********************
ErrorLog /var/log/apache2/ssl_443_certificate_error_log
TransferLog /var/log/apache2/ssl_443_certificate_access_log
LogLevel debug
CustomLog /var/log/apache2/ssl_request_log "%t %h %{SSL_PROTOCOL}x \"%r\" %b"
SetEnv nokeepalive ssl-unclean-shutdown
SetEnv proxy-nokeepalive 1
ProxyRequests Off
RequestHeader set custom-host "your-domain.com"
ProxyPass / https://certificate.bcdiploma.com:443/ connectiontimeout=300 timeout=300
ProxyPassReverse / https://certificate.bcdiploma.com:443/
</VirtualHost>
Step 3: please advise our services
Tell our services the path to your certificates domain, we will update the blockchain so that the certificates are accessible from your URL as soon as possible.
Recommended method 2: with a BCdiploma-operated reverse proxy
How it works
BCdiploma can display your certificates directly on a subdomain of your institution (e.g. certificate.your-domain.com), with no infrastructure to deploy on your side. HTTPS termination, the issuance of the SSL certificate in your name and its renewal are fully handled by the BCdiploma platform. Your IT team only has three DNS records to create, in two stages.
The principle is a DNS alias: your subdomain points, via a CNAME record, to a dedicated entry point provisioned by BCdiploma (a reverse proxy operated by BCdiploma), which presents an SSL certificate issued in the name of your subdomain. Two TXT records are used beforehand to prove that you actually control this domain name.
The setup is done environment by environment: first staging (e.g. certificate-staging.your-domain.com), then production (e.g. certificate.your-domain.com). The process below is identical in both cases; only the values provided by our services differ.
Advantages:
- No infrastructure to deploy or maintain on your side (no server, no reverse proxy to operate yourself)
- SSL certificate issued and renewed automatically by our services
- Maximum compatibility with social networks and all browsers
- Totally transparent for the end user
Disadvantages:
- Requires a dedicated subdomain (e.g.
certificate.your-domain.com). Addresses such asyour-domain.com/certificates(a path on an existing domain) are not possible with this method. - Three DNS records to be created by your IT team, in two stages a few days apart at most.
- An additional annual cost on the license. It covers the provisioning of an entry point dedicated to your domain on our delivery infrastructure, the issuance and automatic renewal of the SSL certificate in your name, and the ongoing supervision of this service. Please contact our services for pricing details.
Prerequisites
- 2 dedicated subdomains for displaying certificates (e.g.
certificate.your-domain.comordigitalcredential.your-domain.com), one for staging and the other for production. A root domain (your-domain.comwithout a prefix) cannot be used. - Responsiveness: one of the records provided expires after 7 days (see Step 2).
Tips
During the setup, set the TTL of your records to a short value (300 seconds) to make validations smoother. You can raise it again afterwards.
Step 1: request activation from our services
Send our services the desired subdomain for the environment concerned (e.g. certificate-staging.your-domain.com for staging).
In return, we will send you the value of the _dnsauth record to create (the value of the second record, asuid, is fixed and shown below).
Step 2: create the two TXT validation records
Create the following two records in your DNS zone:
| Type | Name | Value |
|---|---|---|
| TXT | asuid.<subdomain> | B00142A9973C285844AE312C238A76C5801571AF793A33D7D70295F017C76C9B |
| TXT | _dnsauth.<subdomain> | Value provided by our services (unique for each subdomain) |
Info
The asuid value above is identical for all your subdomains and for all environments: staging, production EU zone and production US zone. The _dnsauth value, however, is specific to each subdomain: our services must provide it to you.
Example for digitalcredential-staging.your-domain.com:
| Type | Name | Value |
|---|---|---|
| TXT | asuid.digitalcredential-staging | B00142A9973C285844AE312C238A76C5801571AF793A33D7D70295F017C76C9B |
| TXT | _dnsauth.digitalcredential-staging | _9lqb75wsg952xyp... (value provided by our services) |
Once the records are created, notify our services.
Warning
The _dnsauth record is valid for 7 days. Please create both records within 5 days of receiving them; beyond that, ask us for an up-to-date value before proceeding.
Step 3: wait for our confirmation
Upon receipt of your records, our services validate the domain, issue the SSL certificate in your name and configure the platform. We will confirm the completion of these operations by sending you the CNAME target to create. This usually takes less than 48 hours.
Warning
Do not create the CNAME of step 4 before receiving our confirmation: as long as the SSL certificate has not been issued, your subdomain would display security errors to visitors.
Step 4: create the CNAME record
Create the final record with the target corresponding to your environment, as confirmed by our services at step 3. Only create this CNAME for the environment currently being set up (each environment follows its own cycle of steps 1 to 5):
| Environment | Type | Name | Target |
|---|---|---|---|
| Staging | CNAME | <subdomain> | bcdiploma-staging-reader-g3cre0e8exhhdshy.z01.azurefd.net |
| Production (EU zone) | CNAME | <subdomain> | bcdiploma-prod-reader-azg2a5gbbmhwh7ev.z01.azurefd.net |
| Production (US zone) | CNAME | <subdomain> | bcdiploma-prod-reader-cus-h8bqgxabggghe2hj.z01.azurefd.net |
Warning
The zone (EU or US) corresponds to the location of your data on our platform, defined at subscription time. Being a US institution does not necessarily mean that your data is hosted in the US zone. If in doubt, ask our services for confirmation before creating the CNAME.
After DNS propagation (from a few minutes to a few hours depending on your TTL), your certificates can be viewed on your subdomain, over HTTPS, with an SSL certificate in your name.
Step 5: verify and keep the configuration
Check that a test certificate is displayed correctly on your subdomain, then repeat the process for the production environment.
Warning
The CNAME record must be kept permanently: it carries the entire service, and it is what allows the automatic renewal of the SSL certificate. Never delete or modify it without consulting us first.
The two TXT records are only needed for the setup: you can delete them once the service is up and running, in particular if your DNS system requires it.
Recommended method 3: by delegating your subdomain to BCdiploma
How it works
This method produces the same result as method 2 — your certificates served on your subdomain, with an SSL certificate in your name fully managed by us — but with a different DNS integration: instead of creating the validation records and then the CNAME yourself, you delegate the DNS management of the subdomain to BCdiploma through NS records. The subdomain then becomes a DNS zone operated by our services: we create and maintain all the necessary records there, both today and for future certificate renewals.
When to prefer this method over method 2:
- your DNS system does not allow you to create the records required by method 2 (for example child records under a name that already carries a CNAME);
- your DNS changes go through a long or constrained change process, which you only want to go through once;
- you want to never have to perform any DNS action again for this service.
Advantages:
- A single DNS operation, done once: no further intervention from your teams, including for certificate renewals
- None of the provided values expire: carry out the operation whenever it suits your internal process
- Minimal service interruption if a service already exists on this subdomain: our zone is preconfigured to respond exactly like your current DNS, and the actual switchover only happens later, under our control, once the certificate has been issued
- No infrastructure on your side, maximum compatibility with social networks and all browsers, totally transparent for the end user
Disadvantages:
- The delegated subdomain is fully managed by BCdiploma: you can no longer create records on it yourself. Only delegate a subdomain strictly dedicated to certificate display.
- Requires a dedicated subdomain (addresses such as
your-domain.com/certificatesare not possible with this method). - An additional annual cost on the license, under the same terms as method 2 — please contact our services.
Prerequisites
- 2 dedicated subdomains (one for staging, one for production).
- Your DNS provider must allow the creation of NS records for a subdomain (delegation) — this is the case with almost all registrars and DNS services.
Step 1: request activation from our services
Send our services:
- the desired subdomain for the environment concerned (e.g.
digitalcredential-staging.your-domain.comfor staging); - if a service already responds on this name (migration case): let us know — we will preconfigure our zone to ensure continuity, without any interruption for your users.
In return, we will send you the 4 NS records to create.
Step 2: create the delegation
In your DNS zone, create the 4 NS records provided:
| Type | Name | Value |
|---|---|---|
| NS | <subdomain> | ns1-XX.azure-dns.com. |
| NS | <subdomain> | ns2-XX.azure-dns.net. |
| NS | <subdomain> | ns3-XX.azure-dns.org. |
| NS | <subdomain> | ns4-XX.azure-dns.info. |
Warning
If a record already exists on this name (a CNAME, for example), it must be deleted when creating the NS records — the two cannot coexist. This is safe: in the case of a migration, our zone responds exactly like your current record, and your users will not notice any difference.
Notify our services once the operations have been carried out.
Step 3: we do the rest
Upon receipt of your confirmation, our services carry out all the operations (validation, issuance of the SSL certificate in your name, commissioning, traffic switchover) and confirm to you that the service is live. In the case of a migration, keep your old service active until our explicit confirmation that it can be decommissioned.
Tips
The NS delegation must be kept permanently: it carries the entire service. No further DNS work will ever be required on your side — certificate renewals are fully handled by our services.
Not recommended method 4: setting up an iframe system
Advantages:
- Requires a simple initial intervention by your IT/infrastructure team
Disadvantages:
- If you change the infrastructure of your website, you'll need to keep the same access path to the certificates you've already issued. This can be a complex operation, especially if you change the type of web server or CMS.
- Limited handling of thumbnails in social networks. Only a static image that you specify in the iframe code will be displayed as a thumbnail on social networks. In particular, logos used in your microcertification templates will not be displayed as thumbnails in this context
- The iframe code may need to be updated from time to time
How it works
BCdiploma certificates will be displayed in an iframe hosted on the third-party site. In concrete terms, the third-party website will host:
- a simple static html page (provided by our services) allowing to display in an iframe the certificates coming from certificate.bcdiploma.com or certificate-cus.bcdiploma.com.
- a thumbnail used in overviews on websites where the link is shared
Please find here an example of an iframe integration on the myBCdiploma website.
The identifier of the certificate will be passed as a parameter to this page (ex: https://your-domain.com/certificates/index.html?key=684B6E2716D35894A1DEF33DE4F30B415D3C8953F8F2CDF7808582B4F0D0F6D7aVBzTmpBREQ0bXZCVUpybDlqYklvRmZxTnJEVVgza3BGVVFoczk5NE1ZSTNWOAAA) to display a specific certificate.
Step 1: preparing your web server
On your web server, create a dedicated directory (ex: certificates), https://your-domain.com/certificates, or choose an existing directory (in the second case, be careful not to overwrite its contents in the following steps)
Step 2: preparing the thumbnail file
Prepare an image file containing your logo and place it in the folder created in 1. It is this image that will be previewed on the sites on which the links of your certificates will be shared. Note that we can provide you with a thumbnail optimized for LinkedIn. Optimal dimensions: 1200*627px Example: https://www.bcdiploma.com/img/thumbnail-opengraph.png
Warning
Due to limitations of social networks, thumbnails cannot be customized by template when using the iframe system. This limitation can be annoying in the case of micro-credentials where the thumbnail is supposed to change from one template to another. In this case, you should use the reverse-proxy system.
Step 3: preparation of the HTML file
Prepare an index.html file with the following content and customize it:
- Enter the tags indicated in
<head> - In the
hostvariable at the end of the file
and place it in the directory created in step 1.
Tips
Avoid customizing other elements of this page, especially including headers/footers that could alter the responsive behaviors of the certificates.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<meta name="robots" content="noindex" />
<!-- Start of customizable information -->
<!-- Customize the titles and descriptions that will be displayed in browser tabs and social media shares -->
<title>BCdiploma blockchain certificate</title>
<meta property="og:title" content="BCdiploma blockchain certificate" />
<meta
name="description"
content="This certificate was issued through the BCdiploma services and certified on the blockchain."
/>
<meta
property="og:description"
content="This certificate was issued through the BCdiploma services and certified on the blockchain."
/>
<!-- Customize the preview image that will be displayed on social media -->
<!-- Use a full path. Optimal format: 1200*627px -->
<meta
property="og:image"
content="https://www.bcdiploma.com/img/thumbnail-opengraph.png"
/>
<!-- Customize the favicon that will be displayed in the browser tab -->
<!-- Use a full path. Optimal format: 32*32px. -->
<link href="https://www.bcdiploma.com/bcdiploma-favicon.png" rel="icon" />
<!-- Put your issuer name in "content" -->
<meta property="article:author" content="BCdiploma" />
<!-- End of customizable information -->
<meta property="og:type" content="article" />
</head>
<body>
<!-- Certificate will be displayed in a frame -->
<iframe
id="frameBcd"
width="100%"
height="100%"
style="position:absolute;overflow:hidden;height:100%;margin: 0;padding: 0;top: 0;left:0"
frameborder="0"
allowfullscreen
>
</iframe>
</body>
<script>
let url = window.location.href;
let query = url.split("?");
let queries = query[1].split("&");
let env, key, baseUrl;
for (let i = 0; i < queries.length; i++) {
let temp = queries[i].split("=");
if (temp[0] === "env") env = temp[1];
else if (temp[0] === "key") key = temp[1];
}
switch (env) {
case "demo":
baseUrl = "https://certificate-demo.bcdiploma.com/check/";
break;
case "staging":
baseUrl = "https://certificate-staging.bcdiploma.com/check/";
break;
default:
baseUrl = "https://certificate.bcdiploma.com/check/";
}
// Specify the domain name on which the file is hosted, excluding subdirectories
let host = "?host=subdomain.yourdomain.com";
document.getElementById("frameBcd").src = baseUrl + key + host;
</script>
</html>
Step 4: please advise our services
Tell our services the path to these files, we will update the blockchain so that the certificates are accessible from your URL as soon as possible.
FAQ
I set up a CNAME “redirect” from a subdomain on my institutional domain to a BCdiploma certificate display subdomain (e.g., certificate.bcdiploma.com), but it doesn’t work. I get an error when opening a certificate—what’s happening?
A CNAME record is not a web redirect—it’s only a DNS alias. The browser still connects to your hostname (e.g., certificates.your-domain.com) and, over HTTPS, it requires a TLS/SSL certificate that matches that exact hostname. BCdiploma’s servers present a certificate for certificate.bcdiploma.com, not for certificates.your-domain.com, which results in an SSL certificate mismatch / TLS error. To serve certificates on your domain, you need a reverse proxy (Nginx/Apache/etc.): it terminates HTTPS using your certificate, then proxies requests to certificate.bcdiploma.com while keeping the URL transparent and adding the required headers (e.g., custom-host) as described in the documentation.
Note: the "BCdiploma-operated reverse proxy" method described above does rely on a CNAME record—but that CNAME points to a dedicated entry point, provisioned by our services, which presents an SSL certificate issued in the name of your subdomain. It is this prior provisioning that makes the DNS alias work, unlike a CNAME pointing directly to certificate.bcdiploma.com.
Can I use my root domain (your-domain.com) rather than a subdomain?
Not with methods 2 and 3: a root domain cannot carry a CNAME record (a limitation of the DNS standard). Use a dedicated subdomain (e.g. certificate.your-domain.com), or the reverse proxy method if you want to serve the certificates under a path of your main domain.