Launching a mini program requires satisfying two sets of requirements simultaneously: domain filing (ICP) (compliance) and interface certificate (technical). They are not interchangeable—even if the filing is complete, non-compliant certificates will still prevent launch.
This article explains the relationship between the two and the inspection sequence. Specific requirements are subject to regulations from competent authorities and platform rules.
Two Sets of Requirements
| Category | Requirement | Consequence of Non-Compliance |
|---|---|---|
| Filing (ICP) | The interface domain must be filed | The domain cannot be accessed normally on domestic servers |
| Certificate | HTTPS + Valid Certificate + Complete Chain + TLS 1.2+ | Requests intercepted by the platform |
Handle Filing First
Filing must be initiated in advance because it has a processing cycle, unlike certificates which can be obtained instantly.
| Item | Description |
|---|---|
| Target | Domains used for interfaces (confirm both main domains and subdomains) |
| Applicant | Submitted through the server provider |
| Timeline | Has an audit cycle; plan ahead |
| Note | Domain real-name registration info must match the filing entity |
# Verify domain accessibility (indirect verification of completed filing)
curl -I https://api.example.com/ -m 10 | head -3
# If blocked due to filing-related issues, filing is incomplete
A Common Oversight: Subdomains
| Scenario | Separate Filing Required? |
|---|---|
| Main domain is filed; using its subdomains | Usually no separate filing needed, but confirm with your provider’s rules |
| Using a different main domain | This domain also needs filing |
# List all domains used and verify each one
grep -rhoE "https://[a-zA-Z0-9.-]+" ./miniprogram --include='*.js' | sort -u
“Switching to a new interface domain” is the most common oversight—the main domain is filed, but the newly purchased domain is not.
Then Handle Certificates
| Requirement | Verification Method |
|---|---|
| Must be HTTPS | Check URL protocol |
| Certificate valid and not expired | openssl x509 -noout -dates |
| Complete Chain | -verify_return_error returns 0 |
| TLS ≥ 1.2 | OpenSSL test |
| Domain Match | Check subjectAltName |
| Not Self-Signed | Check issuer |
# Check multiple interface domains at once
for d in api.example.com img.example.com; do
echo "=== $d"
openssl s_client -connect $d:443 -servername $d
-verify_return_error </dev/null 2>/dev/null | grep -i 'verify return'
openssl s_client -connect $d:443 -servername $d </dev/null 2>/dev/null
| openssl x509 -noout -enddate
done
Configuration After Both Are Satisfied
- Configure request legitimate domains in the official public platform
- Ensure the development tool has disabled “Do Not Verify”
- Test on real devices (one iOS and one Android)
Configuration Key Points:
- Enter only the domain name, without port or path
- Port is fixed at 443
- IP addresses are not supported
- Changes take effect only after republishing
Suggested Sequence
Recommended Timeline:
① Determine interface domains (planning phase; keep them minimal and scalable)
② Submit filing ← Longest cycle, start first
③ Deploy certificates (can run parallel to filing)
④ Configure legitimate domains after filing approval
⑤ Real-device testing
⑥ Submit for review
Filing must start first as it is the only step with a waiting period. Certificates can be obtained quickly and do not need to wait.
Synchronize During Changes
| Change | Action Required |
|---|---|
| Switch interface domain | New domain needs filing + update legitimate domain configuration |
| Replace certificate | Verify new certificate chain is complete; add expiration monitoring |
| Switch server | Confirm if filing access needs updating |
| Add subdomain | Confirm if it falls within the certificate coverage |
# Re-verify after switching domains
curl -I https://new-domain/ -m 10 | head -3
openssl s_client -connect new-domain:443 -servername new-domain
-verify_return_error </dev/null 2>/dev/null | grep -i 'verify return'
Decision Tree
Preparation for Mini Program Launch
├─ Filing (Start first, long cycle)
│ ├─ Interface domain must be filed
│ ├─ New main domain → Must also be filed ← Most easily missed
│ └─ Real-name info must match the entity
├─ Certificate (Can run parallel)
│ ├─ Valid + Complete Chain + TLS 1.2+
│ ├─ Domain Match + Not Self-Signed
│ └─ Add expiration monitoring
├─ Configuration
│ ├─ Request legitimate domains (domain only, port 443)
│ └─ Retest after disabling "Do Not Verify" in dev tools
└─ Post-Change
└─ Re-verify when changing domain/certificate/server
Scenario Analysis: Mini Program Review Rejected Due to Missing Filing Info
Symptom: A mini program’s certificates, domains, and interfaces are configured correctly per HTTPS requirements,
yet the submission is rejected due to incomplete domain qualification information.
- Identify which checkpoint failed →
The transport layer check passed; the bottleneck is domain qualifications.
These are completely independent requirements; passing one does not imply the other is met. - Verify if this specific domain completed the process →
Often, filing is attached to another domain, while the dedicated interface domain was not filed separately. - Determine the relationship with the filed domain →
Direct pointing vs. being a subdomain affects recognition levels differently. - Re-check consistency after remediation →
The filing entity, domain real-name registration, and actual service provider must all match. - Do not ignore platform-side registration →
In some cases, registration on the corresponding platform is also required; completing just one side is insufficient. - Run a full checklist before resubmission →
Separate verification of qualifications and transport layer requirements; both must pass.
# Transport Layer Section (Already passed, but re-confirm before resubmission)
for h in api.example.com static.example.com; do
printf '%-28s ' "$h"
echo | openssl s_client -connect $h:443 -servername $h -verify_return_error 2>&1
| grep -o 'Verify return code: [0-9]*'
done
# Verify actual DNS resolution matches the provider
dig +short example.com A
dig +short example.com NS
# Standard ports are mandatory; custom ports are not accepted
curl -sS -o /dev/null -w '%{http_code}n' https://api.example.com/
Root Cause: Confusing “technical conditions met” with “ready for launch”.
Qualification requirements and transport layer requirements are two independent lines;
no matter how standard the latter is configured, it cannot replace the former.
Two Key Takeaways:
- Review includes two independent lines: Qualifications + Transport Layer.
If qualifications are missing, even perfect transport configuration will result in rejection, often with vague error messages. - Dedicated interface domains are easily overlooked.
Having qualifications for the main domain does not automatically extend to other domains under it.
Combination Matrix: Filing Status vs. Certificate Status
| Filing | Certificate | Result | Priority Action |
|---|---|---|---|
| Incomplete | Irrelevant | Domain cannot be used for external services | Filing |
| Completed | Missing | Interface requests rejected | Certificate |
| Completed | Present but incomplete chain | Failures in some environments; browsers may appear normal | Complete certificate chain |
| Completed | Domain mismatch | Certificate domain validation failure | Replace with certificate covering the domain |
| Completed | Expired | Request failure | Renew and add monitoring |
| Info changed but not updated | Normal | May require rectification | Update filing |
The purpose of this matrix is to separate the diagnosis of these two types of issues.
When interface requests fail, the most common misjudgment is focusing solely on certificates (due to explicit errors),
while the actual cause might be incomplete filing—both cause request failures, but the troubleshooting directions are entirely different.
# 1. Confirm domain resolution and connectivity (exclude filing/blocking issues)
dig +short domain
curl -sS -o /dev/null -w '%{http_code}n' https://domain/
# 2. Strictly validate certificate chain (return code must be 0)
echo | openssl s_client -connect domain:443 -servername domain -verify_return_error 2>&1
| grep -E 'Verify return code'
# 3. Confirm certificate covers the actual domain in use
echo | openssl s_client -connect domain:443 -servername domain 2>/dev/null
| openssl x509 -noout -ext subjectAltName
# 4. Confirm TLS version is not lower than 1.2
echo | openssl s_client -connect domain:443 -servername domain -tls1_2 2>&1 | grep -E 'Protocol'
Following steps 1→4 allows you to isolate four categories of issues: “Resolution/Filing”, “Certificate Chain”, “Domain Coverage”, and “Protocol Version”.
The order matters: If the domain cannot be resolved or access is blocked,
the results of subsequent certificate checks are meaningless.
Pre-Launch Synchronization Checklist
- Filing completed and consistent with reality: Entity, domain, and access info.
- Certificate covers all actual domains: Including interface domains and subdomains.
- Certificate chain is complete: Verified via strict check returning code 0.
- Protocol version meets requirements: Not lower than 1.2.
- Renewal is monitored: Alerts received before expiration.
Item 5 is often overlooked, yet it determines how long items 1-4 remain valid.
Certificates have validity periods, and filing info changes—
one-time compliance does not guarantee long-term adherence; integrating “synchronized checks during changes” into the workflow closes the loop.
8 Common Pitfalls
- Filing only, ignoring certificates: Both are required.
- New domain without filing: Most commonly missed.
- Incomplete certificate chain: Masked by browser compatibility.
- Using self-signed certificates: Not trusted.
- Legitimate domains include ports or paths: Configuration invalid.
- Testing without disabling “Do Not Verify”: Issues ignored.
- Switching servers without confirming filing access: May cause blocking.
- No monitoring for certificate expiration: Expiry discovered post-launch causes trouble.
Real Customer Feedback (From Cloud Market Reviews and Consultations for Similar Products)
The following excerpts are taken from real buyer reviews and consultations for similar operations services on Alibaba Cloud / Tencent Cloud / Huawei Cloud Cloud Markets (service providers include our store and peers, provided for reference only, not fictional tickets from this site):
a****8 Rating: 5.0 Aug 22, 2025 14:43 r****8 Rating: 5.0 May 22, 2025 15:34 t****c Rating: 5.0 Apr 18, 2025 13:58 Cai****Kang Rating: 5.0 Aug 31, 2024 12:05 2****2 Rating: 5.0 Feb 21, 2024 11:08
s****2 Rating: 5.0 Feb 28, 2023 11:04 Mai****8 Rating: 5.0 Jun 29, 2020 17:44 4****6 Rating: 5.0 Jan 07, 2019 14:56