Custom ES Module for 1C-Bitrix with CryptoPro

Our company is engaged in the development, support and maintenance of Bitrix and Bitrix24 solutions of any complexity. From simple one-page sites to complex online stores, CRM systems with 1C and telephony integration. The experience of developers is confirmed by certificates from the vendor.
Showing 1 of 1All 1626 services
Custom ES Module for 1C-Bitrix with CryptoPro
Medium
~1-2 weeks
Frequently Asked Questions

Our competencies:

Development stages

Latest works

  • image_website-b2b-advance_0.webp
    B2B ADVANCE company website development
    1356
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Website development for FIXPER company
    943
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Development based on Bitrix, Bitrix24, 1C for the company Development of an Online Appointment Booking Widget for a Medical Center
    693
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Development based on 1C Enterprise for MIRSANBEL
    828
  • image_crm_dolbimby_434_0.webp
    Website development on CRM Bitrix24 for DOLBIMBY
    731
  • image_crm_technotorgcomplex_453_0.webp
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    1073

We implemented the ES module for a logistics company with a monthly document flow of 20,000 documents. They lost 3 days on each contract. After integrating CAdES-X Long Type 1 with CryptoPro CSP for electronic signatures, the time dropped to 2 hours, and courier cost savings amounted to 150,000 rubles per month. The legal validity of the signature is regulated by Federal Law No. 63-FZ "On Electronic Signatures." We develop such modules for 1C-Bitrix, embedding the cryptographic stack directly into your document flow. With over 10 years of experience — we have completed more than 30 projects. Get a consultation — we will assess timelines and scope individually. Module development cost is calculated individually depending on format and integration complexity.

Ensuring Legal Validity of the Signature

Electronic signatures in Russia are governed by 63-FZ. For legal validity, a qualified signature (QES) with a certificate from an accredited CA is required. Our module uses CryptoPro CSP, which is certified by the FSB of Russia. The CAdES-X Long Type 1 signature includes a timestamp and OCSP responses, allowing verification even after 10 years. We guarantee the module works correctly with any CA from the Ministry of Digital Development's registry. If needed, we configure the trust chain through root certificates.

Cryptographic Stack: CryptoPro CSP and Signature Formats

The de facto standard for Russian ES is CryptoPro CSP. In web applications, the following combination works:

  • CryptoPro CSP — cryptographic provider on the user's machine (or server). Implements GOST R 34.10-2012 and GOST R 34.11-2012
  • CryptoPro Browser Plugin — native application + extension for Chrome/Firefox/Edge
  • cadesplugin.js — JavaScript library for working with the plugin via cadesplugin.CreateObjectAsync()

Signature formats that actually appear in projects:

Format What's Inside When Used
CAdES-BES Signature + certificate + chain Internal document flow without time stamping
CAdES-T CAdES-BES + timestamp Fixing the signing moment
CAdES-X Long Type 1 CAdES-T + OCSP responses + CRL Legally significant exchange and long-term storage (up to 10 years)

In practice: CAdES-BES for internal processes, CAdES-X Long Type 1 for documents that leave the perimeter. The format choice affects infrastructure — CAdES-X Long Type 1 requires a TSP server and an OCSP responder. CAdES-X Long Type 1 ensures signature verifiability 10 times longer than CAdES-BES (up to 10 years vs. 1-2 years without re-signing). More about the standard can be read on Wikipedia.

Signing Process: From Click to Server

This is the central technical block. Let's break it down layer by layer — each step contains pitfalls.

Step 1: Plugin initialization. cadesplugin.js loads. The library detects the browser and the interaction method. Initialization is asynchronous:

cadesplugin.then(function() {
    // plugin ready
}, function(error) {
    // plugin not installed or extension disabled
});

Critical: if the plugin is not installed, the user must see instructions with download links. In 30% of cases, the problem is exactly here: the plugin is installed, but the extension is disabled after a Chrome update.

Step 2: Certificate selection. The plugin API queries the store. The user sees a list with names and validity periods. Filtering by OID purpose (1.3.6.1.5.5.7.3.4 — document signing) narrows the list. For each certificate, we check:

  • Validity period
  • Presence of a private key (if on a token that is not inserted, returns false)
  • Preliminary revocation status via cached CRL

Step 3: Signature generation. The document is passed as a Base64 string. Process for CAdES-BES:

  1. Create a CAdESCOM.CadesSignedData object
  2. Set the content
  3. Call SignCades() with the certificate and signature type
  4. Result: CMS string in Base64 (detached signature)

When SignCades() is called, the system prompts for the token PIN — this is a system dialog and cannot be customized.

Step 4: Sending and saving. The signature is sent to the server via an AJAX request. We save:

  • Original document
  • Signature file (.sig/.p7s)
  • Metadata: certificate subject, serial number, date

For CAdES-X Long Type 1, the plugin itself contacts TSP and OCSP — but they must be accessible. In production, you need your own TSP or a commercial subscription.

Typical errors and solutions
  • Plugin installed, extension disabled — promise rejects with no clear message. Solution: add instructions on how to enable the extension.
  • Certificate exists, token not connected — HasPrivateKey() returns false. Solution: check token presence before signing.
  • TSP server unavailable — CAdES-X Long Type 1 fails. Solution: fallback to CAdES-BES with a warning.
  • Test CA certificate — everything works in test, but verification fails in production. Solution: configure trust chain validation.

Server-Side Signature Verification

Verification is performed via CryptoPro CSP (installed on the server). For PHP — the phpcades extension or calling cryptcp via exec().

We verify:

  • Integrity: document hash matches the hash in the signature
  • Certificate validity: not expired, not revoked
  • Trust chain: from signer to root CA

Revocation check — two paths:

  • CRL: periodically downloaded list. Up to 24 hours delay
  • OCSP: real-time query. OCSP is 2 times more accurate as it gives the current status.

The result is written to the VERIFICATION_STATUS field. Re-verification is done by a scheduled agent.

Why Long-Term Signature Storage Matters

Data is stored in an HL-block or a separate table:

Field Purpose
DOCUMENT_ID Link to entity (order, contract, act)
FILE_ID Original in b_file
SIGNATURE_FILE_ID Signature file
SIGNER_SUBJECT Data from certificate
SIGN_DATE Signing date
SIGN_FORMAT CAdES-BES / CAdES-X Long Type 1
VERIFICATION_STATUS Verification result
VERIFICATION_DATE Last verification date

Long-term storage. If a document is stored for 5–10 years, GOST algorithms may become obsolete, and the certificate may expire. Solution: periodic re-signing — adding a new timestamp. An agent runs once a month to check if the timestamp is expiring within the next 6 months and adds a new one. Without this, after 3–5 years, a CAdES-X Long Type 1 signature becomes unverifiable.

What's Included in the Work

  • Requirements and infrastructure analysis (CryptoPro availability, certificate types, signature formats)
  • Module development: client side (cadesplugin) + server side (validation, storage)
  • Integration with required Bitrix entities (orders, invoices, contracts)
  • Setting up CRL/OCSP checks and the re-signing agent
  • API documentation and user instructions
  • Administrator and operator training
  • 6 months of technical support after deployment

This module is an infrastructural component. Its complexity lies not in the code volume but in the number of external dependencies: cryptographic provider, plugin, TSP, OCSP, root certificates. Each element requires configuration and monitoring. Development timelines — from 2 weeks to 2 months, depending on format and number of integrations. The cost is calculated individually after analysis. Order a consultation — we will send a commercial proposal with an accurate price and timeline.

Why is 1C-Bitrix the flagship of e-commerce?

A faceted index on a catalog of 200,000 SKUs is not built — bitrix:catalog.smart.filter takes 4 seconds instead of 200 ms, and the customer leaves. Our online store development on 1C-Bitrix eliminates such scenarios: from infoblock architecture and price types to cluster balancing under peak loads. With over 12 years of experience and 200+ completed e-commerce projects, we have solved every performance bottleneck.

Two-way synchronization with 1C via CommerceML — catalog, prices, balances, orders, and statuses. Configured from the admin panel via the catalog module -> 'Exchange with 1C'. Export to marketplaces via YML feeds (catalog.export) for Yandex.Market, Google Shopping, Ozon, Wildberries. According to Wikipedia, 1C-Bitrix is used by more than 70,000 commercial sites in Russia and the CIS (https://en.wikipedia.org/wiki/1C-Bitrix). Contact us to evaluate your current architecture.

How do we solve key performance problems?

bitrix:catalog.smart.filter without faceted index generates queries that bring down MySQL. Solution: build b_catalog_iblock_index — response time drops from 4 seconds to 100–200 ms. For SEO filters, we use catalog.seo.filter — indexable filter intersection pages with unique meta tags.

Composite cache (bitrix:main.composite) speeds up page loading by 3–5 times compared to regular. Goal — product card TTFB < 200 ms. For sessions we use Redis (SESSION_SAVE_HANDLER = redis in .settings.php). Lazy load images, CDN for static, SQL optimization (especially JOINs on b_iblock_element_property). As noted in the official Bitrix documentation, composite cache delivers a page from HTML, bypassing PHP execution and database requests, giving a speed advantage of up to 5x.

Why is caching critical for an online store?

Each second of page load delay reduces conversion by an average of 7%. At TTFB > 400 ms, 32% of users leave the site. Composite cache delivers a page from HTML, bypassing PHP execution and database requests — this gives a speed advantage of up to 5 times. For product cards with frequent price and stock changes, we use tagged caching: invalidation occurs only for affected entities. In practice, we have reduced TTFB from 1.2 seconds to 180 ms. Time savings on catalog loading — up to 60%.

Store types and their features

Store type Key modules Features
B2C retail catalog.smart.filter, catalog.compare.list, reviews, ratings Faceted index, conversion funnel from card to payment
B2B wholesale dealer prices (b_catalog_group), min. lots, credit limits Personal accounts, quick order by SKU, PDF invoices
Digital goods licenses, subscriptions, files OnSaleOrderPaid -> automatic access granting
Marketplace "Marketplace" module or custom Multiple sellers, separate accounting, commission model
PWA / mobile Progressive Web App, React Native + REST API Offline catalog, push notifications

Integrations: payment systems, delivery, CRM, marketplaces

Payment systems. Handlers in sale.handlers: YooKassa, CloudPayments, Tinkoff, Sberbank, Apple Pay, Google Pay, installment. Callback sale.payment.notify for status confirmation. Delivery. Handlers sale.delivery for CDEK, Boxberry, Russian Post, DPD — real-time cost calculation via API, tracking. Warehouse management. Reservation (RESERVED = Y in b_sale_basket), automatic write-off upon shipment, notifications when stock falls below threshold, pre-order for goods in transit. CRM. Bitrix24 or amoCRM — orders from b_sale_order are sent automatically, client base is synchronized. Triggers: abandoned cart, review request, reactivation. Marketplaces. Export via YML to Ozon, Wildberries, Yandex.Market. Orders flow into a single system. Analytics and marketing. GA4, Yandex.Metrica, email newsletters (Unisender, SendPulse). Logistics. MyWarehouse, Antor — labels, picking lists.

Migration from other CMS

Migration from OpenCart, WooCommerce, Shopify, MODX: transfer of catalog (elements, properties, sections, images, SEO-URLs), migration of client base (b_user) and order history (b_sale_order), 301 redirects via urlrewrite.php. Parallel operation during the transition period — old site sells, new one is accepted. Team experience — 50+ migration projects.

Example migration: from OpenCart with 50,000 products We transferred all data, including custom attributes and review history, in two weeks with zero downtime. The new store was tested in parallel before switching DNS. Result: 25% faster page load and 15% increase in sales.

What is included in the work (deliverables)

Deliverable Description
Technical specification Business requirements, catalog structure, integrations, cart logic
Infoblock architecture Price types, properties, sections, HL-blocks, ORM entities
Components and templates Custom or adapted standard (Component 2.0)
Integrations Payments, delivery, CRM, marketplaces, 1C
Documentation Content filling instructions, REST API, DB schema
Team training Working with admin panel, exports, updates
Warranty Free support 3 months after launch, bug fixes

Stages and timelines

Average project duration — 2 to 4 months:

  1. Analytics (1–2 weeks) — business requirements, catalog structure, integrations, technical specification
  2. Design (2–3 weeks) — prototypes, design system, layouts
  3. Development (4–8 weeks) — components, templates, integrations, content
  4. Testing (1–2 weeks) — functional, load, acceptance
  5. Launch (2–3 days) — deployment, monitoring, operational support

Budget range: from $10,000 for a basic store to $60,000+ for a complex marketplace with multiple integrations. Clients typically see a 20–30% increase in conversion after optimization. Contact us for a precise estimate — we tailor the solution to your specific catalog size and business logic.

Loyalty program and conversion

Bonus system: points for purchases, reviews, recommendations. Accrual rules by categories, points payment limit, expiration period — all in personal account. VIP levels (bronze, silver, gold, platinum) with increased cashback and free shipping. Recommendations 'You may also like', 'Complete your purchase' — built-in Bitrix tools + RetailRocket or Mindbox. Triggers: birthday discount, promo code for return, interest chain. Personalization via catalog.recommended.products and catalog.viewed.products. A/B testing of two card variants on real traffic. Enhanced E-commerce in GA4 and Yandex.Metrica — full path from click to return visit.

Request a free technical audit of your current store. Our engineers will identify performance bottlenecks and migration risks. Order turnkey online store development — get a ready solution with warranty and support.